diff options
| -rw-r--r-- | src/cmd/devdraw/x11-screen.c | 63 |
1 files changed, 12 insertions, 51 deletions
diff --git a/src/cmd/devdraw/x11-screen.c b/src/cmd/devdraw/x11-screen.c index f4aa1ce9..df7cca46 100644 --- a/src/cmd/devdraw/x11-screen.c +++ b/src/cmd/devdraw/x11-screen.c @@ -502,6 +502,7 @@ runxevent(XEvent *xev) * so clear out the keyboard state when we lose the focus. */ _x.kstate = 0; + _x.kbuttons = 0; _x.altdown = 0; gfx_abortcompose(w->client); break; @@ -1275,10 +1276,18 @@ _xtoplan9kbd(XEvent *e) return k+0; } +int +_xtoplan9buttons(unsigned int b) +{ + if(b == 0){ + return 0; + } + return 1<<(b-1); +} + static int _xtoplan9mouse(Xwin *w, XEvent *e, Mouse *m) { - int s; XButtonEvent *be; XMotionEvent *me; @@ -1307,54 +1316,18 @@ _xtoplan9mouse(Xwin *w, XEvent *e, Mouse *m) /* BUG? on mac need to inherit these from elsewhere? */ m->xy.x = be->x; m->xy.y = be->y; - s = be->state; m->msec = be->time; - switch(be->button){ - case 1: - s |= Button1Mask; - break; - case 2: - s |= Button2Mask; - break; - case 3: - s |= Button3Mask; - break; - case 4: - s |= Button4Mask; - break; - case 5: - s |= Button5Mask; - break; - } + m->buttons |= _xtoplan9buttons(be->button); break; case ButtonRelease: be = (XButtonEvent*)e; m->xy.x = be->x; m->xy.y = be->y; - s = be->state; m->msec = be->time; - switch(be->button){ - case 1: - s &= ~Button1Mask; - break; - case 2: - s &= ~Button2Mask; - break; - case 3: - s &= ~Button3Mask; - break; - case 4: - s &= ~Button4Mask; - break; - case 5: - s &= ~Button5Mask; - break; - } - break; + m->buttons &= ~_xtoplan9buttons(be->button); case MotionNotify: me = (XMotionEvent*)e; - s = me->state; m->xy.x = me->x; m->xy.y = me->y; m->msec = me->time; @@ -1363,18 +1336,6 @@ _xtoplan9mouse(Xwin *w, XEvent *e, Mouse *m) default: return -1; } - - m->buttons = 0; - if(s & Button1Mask) - m->buttons |= 1; - if(s & Button2Mask) - m->buttons |= 2; - if(s & Button3Mask) - m->buttons |= 4; - if(s & Button4Mask) - m->buttons |= 8; - if(s & Button5Mask) - m->buttons |= 16; return 0; } |