summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2014-08-25 15:02:23 -0400
committerQuentin Carbonneaux2014-08-25 15:13:53 -0400
commitf531802e0fb6d0b8d7f242afd11e6898a0d04d6a (patch)
treee294b53981ede23e02a1c5446e252f5c0302004f
parentc343ff32170825b518d59abd8607f918ac8302f5 (diff)
improve mouse code, fix bug (mwin == 0)
-rw-r--r--main.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/main.c b/main.c
index 3835ce9..d757502 100644
--- a/main.c
+++ b/main.c
@@ -55,17 +55,19 @@ gev(int fd, int flag, void *unused)
case GMouseDown:
if (e.mouse.button == GBLeft) {
mwin = win_locus(e.mouse.x, e.mouse.y, &pos);
+ if (!mwin)
+ break;
if (g->ptincontrol(&mwin->gr, e.mouse.x, e.mouse.y)) {
g->setpointer(GPResize);
resizing = 1;
break;
}
- if (mwin != curwin) {
- curwin = mwin;
- break;
+ if (mwin == curwin) {
+ selbeg = pos;
+ goto Select;
}
- selbeg = pos;
- goto Select;
+ curwin = mwin;
+ mwin = 0;
} else if (e.mouse.button == GBWheelUp) {
win_scroll(curwin, -4);
} else if (e.mouse.button == GBWheelDown) {
@@ -83,8 +85,9 @@ gev(int fd, int flag, void *unused)
if (resizing)
break;
win = win_locus(e.mouse.x, e.mouse.y, &pos);
- if (mwin == win) {
- if (selbeg != -1u && pos != selbeg) {
+ if (win && mwin == win) {
+ assert(selbeg != -1u);
+ if (pos != selbeg) {
eb_setmark(curwin->eb, SelBeg, selbeg);
eb_setmark(curwin->eb, SelEnd, pos);
}