tFix empty selection highlighting bug. - st - [fork] customized build of st, th… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c990abfedf56cb8d3176fe6d5152ff65bb68bff0 | |
parent 3cb7f27afe89c33c74b51c5460b7fb16413f786b | |
Author: noname <[email protected]> | |
Date: Sun, 3 May 2015 19:28:10 +0000 | |
Fix empty selection highlighting bug. | |
When user clicks LMB, one character is selected, but will not be copied | |
tto selection until the user moves cursor a bit. Therefore, the character | |
should not be highlighted as selected yet. | |
Before the patch, the trick was not to mark line as dirty to avoid | |
highlighting it. However, if user has already selected something and | |
clicks in line that contains selection, selclear sets the line as dirty | |
and one character is highlighted when it should not. | |
This patch replaces dirty trick with explicit check for sel.mode inside | |
selected(). | |
Diffstat: | |
M st.c | 12 +++++------- | |
1 file changed, 5 insertions(+), 7 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -716,6 +716,9 @@ selnormalize(void) { | |
bool | |
selected(int x, int y) { | |
+ if(sel.mode == SEL_EMPTY) | |
+ return false; | |
+ | |
if(sel.type == SEL_RECTANGULAR) | |
return BETWEEN(y, sel.nb.y, sel.ne.y) | |
&& BETWEEN(x, sel.nb.x, sel.ne.x); | |
t@@ -921,14 +924,9 @@ bpress(XEvent *e) { | |
} | |
selnormalize(); | |
- /* | |
- * 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 = SEL_READY; | |
- tsetdirt(sel.nb.y, sel.ne.y); | |
- } | |
+ tsetdirt(sel.nb.y, sel.ne.y); | |
sel.tclick2 = sel.tclick1; | |
sel.tclick1 = now; | |
} |