Avoid backlogging duplicate keypress events.
This commit is contained in:
parent
34dc956272
commit
3a594b5355
@ -223,6 +223,15 @@ static bool IsRepeatKey(Display * display, XEvent * event)
|
||||
}
|
||||
#endif
|
||||
|
||||
static Bool MatchKeyPress(Display * display, XEvent * event, XPointer arg)
|
||||
{
|
||||
XEvent * match_event = (XEvent *)arg;
|
||||
return (event->type == match_event->type) &&
|
||||
(event->xkey.window == match_event->xkey.window) &&
|
||||
(event->xkey.state == match_event->xkey.state) &&
|
||||
(event->xkey.keycode == match_event->xkey.keycode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process an X key press event.
|
||||
*
|
||||
@ -238,6 +247,12 @@ static bool ProcessXKeyPressEvent(XEvent * x_event, Jtk_Event * event)
|
||||
event->key.repeat = false;
|
||||
event->key.key = XKeyToJtkKey(x_keycode, x_event->xkey.state);
|
||||
event->key.x_keycode = x_keycode;
|
||||
/* Remove any following keypress events for the same keycode from the X
|
||||
* queue. */
|
||||
XEvent remove_event;
|
||||
while (XCheckIfEvent(g_display, &remove_event, MatchKeyPress, (XPointer)x_event) == True)
|
||||
{
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user