Compare commits

...

3 Commits

Author SHA1 Message Date
Recursive G
a82174343e
Merge 679106e8b0 into 0d2d85d19c 2025-08-18 12:01:41 +00:00
Doug Binks
0d2d85d19c Revert "Wayland: Keyboard leave event handler now processes key repeats" 2025-08-15 11:27:59 +02:00
Recursive G
679106e8b0
Properly discard filtered events by XFilterEvent()
According to https://www.x.org/releases/current/doc/man/man3/XFilterEvent.3.xhtml,
an event should be discarded if XFilterEvent returns `True`. Fix #1794.
2021-10-05 22:35:05 -05:00
2 changed files with 4 additions and 18 deletions

View File

@ -1778,24 +1778,6 @@ static void keyboardHandleLeave(void* userData,
if (!window) if (!window)
return; return;
// Handle any key repeats up to this point. We don't poll as this should be infrequent.
uint64_t repeats;
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
{
if(_glfw.wl.keyboardFocus)
{
for (uint64_t i = 0; i < repeats; i++)
{
_glfwInputKey(_glfw.wl.keyboardFocus,
translateKey(_glfw.wl.keyRepeatScancode),
_glfw.wl.keyRepeatScancode,
GLFW_PRESS,
_glfw.wl.xkb.modifiers);
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
}
}
}
struct itimerspec timer = {0}; struct itimerspec timer = {0};
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL); timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);

View File

@ -1153,6 +1153,10 @@ static void processEvent(XEvent *event)
keycode = event->xkey.keycode; keycode = event->xkey.keycode;
filtered = XFilterEvent(event, None); filtered = XFilterEvent(event, None);
if (filtered)
{
return;
}
if (_glfw.x11.randr.available) if (_glfw.x11.randr.available)
{ {