ref: aaea83de4f6eddc62dbcdedc69a70e08a5db7e5f
parent: e3d75ecc0a3305126ed697789cc16df264c5939d
author: phil9 <[email protected]>
date: Tue May 11 14:54:10 EDT 2021
handle mouse clicks on scrollbar scrollbar now reacts to mouse clicks like any standard 9 application. mouse 1 and 3 scroll up and down respectively with the scroll speed based on where the click occurs in the scrollbar (the lower the faster and vice versa) mouse 2 moves the scroll position to where the click occurs
--- a/vdir.c
+++ b/vdir.c
@@ -386,11 +386,23 @@
void
evtmouse(Mouse m)
{
- int n;
+ int n, dy;
Dir d;
char buf[256] = {0};
- if(m.buttons&4){
+ if(m.buttons&1){
+ if(ptinrect(m.xy, scrollr)){
+ dy = 1+nlines*((double)(m.xy.y - scrollr.min.y)/Dy(scrollr));
+ scrollup(dy);
+ }
+ }else if(m.buttons&2){
+ if(ptinrect(m.xy, scrollr)){
+ if(nlines<ndirs){
+ offset = (m.xy.y - scrollr.min.y) * ndirs/Dy(scrollr);
+ redraw();
+ }
+ }
+ }if(m.buttons&4){
if(ptinrect(m.xy, homer)){
cd(nil);
redraw();
@@ -425,6 +437,9 @@
redraw();
}else
plumbfile(path, d.name);
+ }else if(ptinrect(m.xy, scrollr)){
+ dy = 1+nlines*((double)(m.xy.y - scrollr.min.y)/Dy(scrollr));
+ scrolldown(dy);
}
}else if(m.buttons&8)
scrollup(Slowscroll);