diff options
author | phil9 <telephil9@gmail.com> | 2022-04-06 15:29:41 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2022-04-06 15:29:41 +0000 |
commit | aba0c7fceac419c426da85b3f5d4bfe82d410e00 (patch) | |
tree | ee892dd57777c29ea314308dfbe0d1162c1fe78b /sys/src/cmd/mothra | |
parent | a63472edf570d22cf5829b063de083a197e34c3a (diff) |
mothra: enable mousewheel scrolling in history list
In the history list, scrolling was only possible using the scrollbar
but not the mousewheel like in the text panel.
Diffstat (limited to 'sys/src/cmd/mothra')
-rw-r--r-- | sys/src/cmd/mothra/mothra.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/sys/src/cmd/mothra/mothra.c b/sys/src/cmd/mothra/mothra.c index bc8cb9261..c81595542 100644 --- a/sys/src/cmd/mothra/mothra.c +++ b/sys/src/cmd/mothra/mothra.c @@ -140,11 +140,11 @@ int adjkb(void){ return 0; } -void scrolltext(int dy, int whence) +void scrollpanel(Panel *p, int dy, int whence) { Scroll s; - s = plgetscroll(text); + s = plgetscroll(p); switch(whence){ case 0: s.pos.y = dy; @@ -160,7 +160,7 @@ void scrolltext(int dy, int whence) s.pos.y = s.size.y; if(s.pos.y < 0) s.pos.y = 0; - plsetscroll(text, s); + plsetscroll(p, s); } void sidescroll(int dx, int whence) @@ -404,22 +404,22 @@ Plkey: plkeyboard(e.kbdc); break; case Khome: - scrolltext(0, 0); + scrollpanel(text, 0, 0); break; case Kup: - scrolltext(-text->size.y/4, 1); + scrollpanel(text, -text->size.y/4, 1); break; case Kpgup: - scrolltext(-text->size.y/2, 1); + scrollpanel(text, -text->size.y/2, 1); break; case Kdown: - scrolltext(text->size.y/4, 1); + scrollpanel(text, text->size.y/4, 1); break; case Kpgdown: - scrolltext(text->size.y/2, 1); + scrollpanel(text, text->size.y/2, 1); break; case Kend: - scrolltext(-text->size.y, 2); + scrollpanel(text, -text->size.y, 2); break; case Kack: search(); @@ -438,11 +438,18 @@ Plkey: break; case Emouse: mouse=e.mouse; + if(mouse.buttons & (8|16) && ptinrect(mouse.xy, list->r) && defdisplay){ + if(mouse.buttons & 8) + scrollpanel(list, list->r.min.y - mouse.xy.y, 1); + else + scrollpanel(list, mouse.xy.y - list->r.min.y, 1); + break; + } if(mouse.buttons & (8|16) && ptinrect(mouse.xy, text->r)){ if(mouse.buttons & 8) - scrolltext(text->r.min.y - mouse.xy.y, 1); + scrollpanel(text, text->r.min.y - mouse.xy.y, 1); else - scrolltext(mouse.xy.y - text->r.min.y, 1); + scrollpanel(text, mouse.xy.y - text->r.min.y, 1); break; } plmouse(root, &mouse); |