ref: 5fdd03036bcccfc1aca52e52aa8cfd153dba7909
parent: 76835668457f8bca8e16fe10c44c570d3010d2c0
author: qwx <qwx@sciops.net>
date: Thu Mar 10 20:04:28 EST 2022
add vdir-tweaks: mouse buttons, file menu and remove tweaks
--- /dev/null
+++ b/vdir-tweaks
@@ -1,0 +1,74 @@
+diff 8154ecb3fc6c1265e0d5c0ab4288ad514463924d uncommitted
+--- a/vdir.c
++++ b/vdir.c
+@@ -29,10 +29,10 @@
+
+ enum
+ {+- Mdelete,
+ Mrename,
++ Mdelete,
+ };
+-char *menu2str[] = { "delete", "rename", nil };++char *menu2str[] = { "rename", "delete", nil };+ Menu menu2 = { menu2str };+
+ const char ellipsis[] = "…";
+@@ -252,7 +252,7 @@
+ {+ char cmd[300];
+
+- snprint(cmd, sizeof cmd, "rm -r %s/%s", path, name);
++ snprint(cmd, sizeof cmd, "rm %s/%s", path, name);
+ if(doexec(cmd) < 0)
+ showerrstr("Cannot remove file/directory");+ else
+@@ -591,6 +591,15 @@
+ if(scrolling){+ dy = 1+nlines*((double)(m.xy.y - scrollr.min.y)/Dy(scrollr));
+ scrollup(dy);
++ }else if(ptinrect(m.xy, viewr)){++ n = indexat(m.xy);
++ if(n==-1)
++ return;
++ d = dirs[offset+n];
++ if(d.qid.type & QTDIR){++ cd(d.name);
++ redraw();
++ }
+ }
+ }else if(m.buttons&2){+ if(ptinrect(m.xy, viewr)){+@@ -598,6 +607,7 @@
+ if(n==-1)
+ return;
+ d = dirs[offset+n];
++ menu2.lasthit = 0;
+ switch(menuhit(2, mctl, &menu2, nil)){+ case Mdelete:
+ rm(d.name);
+@@ -633,7 +643,7 @@
+ redraw();
+ }
+ }else if(ptinrect(m.xy, pathr)){+- plumbsendtext(plumbfd, "vdir", nil, nil, path);
++ plumbsendtext(plumbfd, "vdirw", nil, nil, path);
+ }else if(ptinrect(m.xy, newdirr)){+ m.xy = cept("Create directory");+ if(enter("Create directory", buf, sizeof buf, mctl, kctl, nil)>0){+@@ -651,13 +661,8 @@
+ if(n==-1)
+ return;
+ d = dirs[offset+n];
+- if(d.qid.type & QTDIR){+- cd(d.name);
+- redraw();
+- }else{+- if(plumbfile(path, d.name))
+- flash(n);
+- }
++ if(plumbfile(path, d.name))
++ flash(n);
+ }
+ }else if(m.buttons&8)
+ scrollup(Slowscroll);
--
⑨