Do not queue up mouse wheel scroll events while others are still processing
This commit is contained in:
parent
5e40c33eda
commit
c2323f4397
@ -276,6 +276,15 @@ static bool ProcessXKeyReleaseEvent(XEvent * x_event, Jtk_Event * event)
|
||||
return false;
|
||||
}
|
||||
|
||||
static Bool MatchButtonPress(Display * display, XEvent * event, XPointer arg)
|
||||
{
|
||||
XEvent * match_event = (XEvent *)arg;
|
||||
return (event->type == match_event->type) &&
|
||||
(event->xbutton.window == match_event->xbutton.window) &&
|
||||
(event->xbutton.state == match_event->xbutton.state) &&
|
||||
(event->xbutton.button == match_event->xbutton.button);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process an X button press event.
|
||||
*/
|
||||
@ -283,6 +292,15 @@ static bool ProcessXButtonPressEvent(XEvent * x_event, Jtk_Event * event)
|
||||
{
|
||||
event->type = JTK_EVENT_BUTTON_PRESS;
|
||||
event->button.button = x_event->xbutton.button;
|
||||
/* If this is a mouse wheel scroll event, remove any following scroll
|
||||
* events. */
|
||||
if ((event->button.button == 4) || (event->button.button == 5))
|
||||
{
|
||||
XEvent remove_event;
|
||||
while (XCheckIfEvent(g_display, &remove_event, MatchButtonPress, (XPointer)x_event) == True)
|
||||
{
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user