tFixing the selection handling to allow one char selection. - st - [fork] custo… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1b2751f5c24ca06afbb68e41e73fc9fce6c6b521 | |
parent 0851f2be2ab48ee3a67ef2287c09bd67622dcd8e | |
Author: Christoph Lohmann <[email protected]> | |
Date: Thu, 25 Apr 2013 06:28:11 +0200 | |
Fixing the selection handling to allow one char selection. | |
Thanks Alexander Sedov <[email protected]> for suggesting the fix! | |
Diffstat: | |
M st.c | 19 +++++++++---------- | |
1 file changed, 9 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -785,11 +785,8 @@ bpress(XEvent *e) { | |
sel.ey = sel.by = y2row(e->xbutton.y); | |
/* | |
- * Snap handling. | |
- * If user clicks are fasst enough (e.g. below timeouts), | |
- * we ignore if his hand slipped left or down and accidentally | |
- * selected more; we are just snapping to whatever we're | |
- * snapping. | |
+ * If the user clicks below predefined timeouts specific | |
+ * snapping behaviour is exposed. | |
*/ | |
if(TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) { | |
sel.snap = SNAP_LINE; | |
t@@ -809,7 +806,8 @@ bpress(XEvent *e) { | |
* Draw selection, unless it's regular and we don't want to | |
* make clicks visible | |
*/ | |
- if (sel.snap != 0) { | |
+ if(sel.snap != 0) { | |
+ sel.mode++; | |
tsetdirt(sel.b.y, sel.e.y); | |
draw(); | |
} | |
t@@ -987,14 +985,14 @@ brelease(XEvent *e) { | |
if(e->xbutton.button == Button2) { | |
selpaste(NULL); | |
} else if(e->xbutton.button == Button1) { | |
- sel.mode = 0; | |
- getbuttoninfo(e); | |
- term.dirty[sel.ey] = 1; | |
- if(sel.bx == sel.ex && sel.by == sel.ey) { | |
+ if(sel.mode < 2) { | |
sel.bx = -1; | |
} else { | |
+ getbuttoninfo(e); | |
selcopy(); | |
} | |
+ sel.mode = 0; | |
+ term.dirty[sel.ey] = 1; | |
} | |
} | |
t@@ -1010,6 +1008,7 @@ bmotion(XEvent *e) { | |
if(!sel.mode) | |
return; | |
+ sel.mode++; | |
oldey = sel.ey; | |
oldex = sel.ex; | |
oldsby = sel.b.y; |