ref: b7ab1354e3fdf32d2a587de00b4b324779b34b20
parent: 473e97869fd5c0e2f7d4bb61a81c6a1cc7686622
parent: f912e018548a1977d849016dca29f9d64cae4f47
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Jan 4 21:39:23 EST 2014
merge
--- a/sys/src/cmd/rio/scrl.c
+++ b/sys/src/cmd/rio/scrl.c
@@ -153,7 +153,7 @@
readmouse(&w->mc);
continue;
}
- if(but == 1)
+ if(but == 1 || but == 4)
p0 = wbacknl(w, w->org, (my-s.min.y)/w->font->height);
else
p0 = w->org+frcharofpt(w, Pt(s.max.x, my));
@@ -163,6 +163,8 @@
/* debounce */
if(first){
flushimage(display, 1);
+ if(but > 3)
+ return;
sleep(200);
nbrecv(w->mc.c, &w->mc.Mouse);
first = FALSE;
--- a/sys/src/cmd/rio/wind.c
+++ b/sys/src/cmd/rio/wind.c
@@ -900,32 +900,22 @@
{
int but;
- if(w->mc.buttons == 1)
- but = 1;
- else if(w->mc.buttons == 2)
- but = 2;
- else if(w->mc.buttons == 4)
- but = 3;
- else{
- if(w->mc.buttons == 8)
- wkeyctl(w, Kscrolloneup);
- if(w->mc.buttons == 16)
- wkeyctl(w, Kscrollonedown);
- return;
+ for(but=1;; but++){
+ if(but > 5)
+ return;
+ if(w->mc.buttons == 1<<(but-1))
+ break;
}
incref(w); /* hold up window while we track */
- if(w->i==nil)
- goto Return;
- if(ptinrect(w->mc.xy, w->scrollr)){
- if(but)
+ if(w->i != nil){
+ if(shiftdown && but > 3)
+ wkeyctl(w, but == 4 ? Kscrolloneup : Kscrollonedown);
+ else if(ptinrect(w->mc.xy, w->scrollr) || (but > 3))
wscroll(w, but);
- goto Return;
+ else if(but == 1)
+ wselect(w);
}
- if(but == 1)
- wselect(w);
- /* else all is handled by main process */
- Return:
wclose(w);
}
--
⑨