summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rio
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-01-05 02:37:42 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-01-05 02:37:42 +0100
commitf912e018548a1977d849016dca29f9d64cae4f47 (patch)
treec92a6e6a9fd9758ece4af76021b41d7ee6ac6754 /sys/src/cmd/rio
parent536423eba6eab6fc8b47b49fb6e25bf38168ffe7 (diff)
rio: make scrollwheel handling consistent with sam
scrollwheel now works proportional to y mouse position. special case is when shift is hold down. then scrollwheel will work like before and scroll one line up or down.
Diffstat (limited to 'sys/src/cmd/rio')
-rw-r--r--sys/src/cmd/rio/scrl.c4
-rw-r--r--sys/src/cmd/rio/wind.c32
2 files changed, 14 insertions, 22 deletions
diff --git a/sys/src/cmd/rio/scrl.c b/sys/src/cmd/rio/scrl.c
index 24d0ae568..de0257538 100644
--- a/sys/src/cmd/rio/scrl.c
+++ b/sys/src/cmd/rio/scrl.c
@@ -153,7 +153,7 @@ wscroll(Window *w, int but)
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 @@ wscroll(Window *w, int but)
/* debounce */
if(first){
flushimage(display, 1);
+ if(but > 3)
+ return;
sleep(200);
nbrecv(w->mc.c, &w->mc.Mouse);
first = FALSE;
diff --git a/sys/src/cmd/rio/wind.c b/sys/src/cmd/rio/wind.c
index 429390a28..9b8f38d01 100644
--- a/sys/src/cmd/rio/wind.c
+++ b/sys/src/cmd/rio/wind.c
@@ -900,32 +900,22 @@ wmousectl(Window *w)
{
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);
}