diff options
| author | Quentin Carbonneaux | 2014-08-24 12:19:17 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux | 2014-08-24 12:19:17 -0400 |
| commit | 4bdd10f6677c953995d32142150748aaf178ea7f (patch) | |
| tree | 6a11ab5bba37f4d85fc0a18dddb9ab70403f1adc | |
| parent | f5ca5e8c43c54de07dfd894e620379bf0bfc7887 (diff) | |
improve selection code
| -rw-r--r-- | main.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -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]) |
