summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2014-08-24 12:19:17 -0400
committerQuentin Carbonneaux2014-08-24 12:19:17 -0400
commit4bdd10f6677c953995d32142150748aaf178ea7f (patch)
tree6a11ab5bba37f4d85fc0a18dddb9ab70403f1adc
parentf5ca5e8c43c54de07dfd894e620379bf0bfc7887 (diff)
improve selection code
-rw-r--r--main.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/main.c b/main.c
index aafacd1..b6e6b88 100644
--- a/main.c
+++ b/main.c
@@ -27,7 +27,7 @@ die(char *m)
static int
gev(int fd, int flag, void *unused)
{
- static int issel;
+ static unsigned selbeg;
GEvent e;
(void) fd;
@@ -49,25 +49,27 @@ gev(int fd, int flag, void *unused)
scrolling = 0;
break;
case GMouseDown:
- if (e.mouse.button == GBLeft)
+ if (e.mouse.button == GBLeft) {
win_set_cursor(curwin, e.mouse.x, e.mouse.y);
- else if (e.mouse.button == GBWheelUp)
+ selbeg = curwin->cu;
+ goto Select;
+ } else if (e.mouse.button == GBWheelUp) {
win_scroll(curwin, -4);
- else if (e.mouse.button == GBWheelDown)
+ } else if (e.mouse.button == GBWheelDown) {
win_scroll(curwin, +4);
+ }
break;
case GMouseSelect:
win_set_cursor(curwin, e.mouse.x, e.mouse.y);
- if (issel)
+ if (selbeg != -1u && curwin->cu != selbeg) {
+ eb_setmark(curwin->eb, SelBeg, selbeg);
eb_setmark(curwin->eb, SelEnd, curwin->cu);
- else
- eb_setmark(curwin->eb, SelBeg, curwin->cu);
- issel = 1;
+ }
goto Select;
default:
break;
}
- issel = 0;
+ selbeg = -1u;
Select:
if (curwin->cu >= curwin->l[curwin->nl])