Don't send button events until chords are complete. - sam - An updated version … | |
git clone git://vernunftzentrum.de/sam.git | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 0f57224765fa40eb25464f20ba2d7fcbf2adeba6 | |
parent 426d401637d866670707f699b376a20c732ddb27 | |
Author: Rob King <[email protected]> | |
Date: Fri, 9 Sep 2016 22:13:21 -0500 | |
Don't send button events until chords are complete. | |
Diffstat: | |
libXg/gwin.c | 8 ++++++++ | |
1 file changed, 8 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/libXg/gwin.c b/libXg/gwin.c | |
@@ -386,6 +386,7 @@ Mouseaction(Widget w, XEvent *e, String *p, Cardinal *np) | |
int s = 0; | |
int ps = 0; /* the previous state */ | |
int ob = 0; | |
+ static bool chording = false; | |
XButtonEvent *be = (XButtonEvent *)e; | |
XMotionEvent *me = (XMotionEvent *)e; | |
@@ -443,6 +444,9 @@ Mouseaction(Widget w, XEvent *e, String *p, Cardinal *np) | |
if(s & Button4Mask) m.buttons |= 8; | |
if(s & Button5Mask) m.buttons |= 16; | |
+ if (!m.buttons) | |
+ chording = false; | |
+ | |
/* Check to see if it's a chord first. */ | |
for (Chordmapping *cm = chordmap; cm; cm = cm->next){ | |
if (ob == cm->s1 && m.buttons == cm->s2){ | |
@@ -451,9 +455,13 @@ Mouseaction(Widget w, XEvent *e, String *p, Cardinal *np) | |
(*kf)(cm->c, Kcommand, cm->t, m.xy.x, m.xy.y); | |
m.buttons = 0; | |
+ chording = true; | |
} | |
} | |
+ if (chording) | |
+ m.buttons = 0; | |
+ | |
f = ((GwinWidget)w)->gwin.gotmouse; | |
if(f) | |
(*f)(&m); |