aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/devdraw/x11-screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/devdraw/x11-screen.c')
-rw-r--r--src/cmd/devdraw/x11-screen.c63
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;
}