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
|
#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.
|
* 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.repeat = false;
|
||||||
event->key.key = XKeyToJtkKey(x_keycode, x_event->xkey.state);
|
event->key.key = XKeyToJtkKey(x_keycode, x_event->xkey.state);
|
||||||
event->key.x_keycode = x_keycode;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user