diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4fc27126..8fa1cb72 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -229,7 +229,7 @@ video tutorials. - Brandon Schaefer - Sebastian Schuberth - Scr3amer - - Jan Schuerkamp + - Jan Schürkamp - Christian Sdunek - Matt Sealey - Steve Sexton diff --git a/README.md b/README.md index 52306188..9d78ecda 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ information on what to include when reporting a bug. - [Wayland] Bugfix: The fractional scaling related objects were not destroyed - [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517) - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault + - [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727) - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` diff --git a/src/wl_window.c b/src/wl_window.c index 72c1a402..6457f31e 100644 --- a/src/wl_window.c +++ b/src/wl_window.c @@ -1267,17 +1267,21 @@ static void handleEvents(double* timeout) if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8) { - for (uint64_t i = 0; i < repeats; i++) + if(_glfw.wl.keyboardFocus) { - _glfwInputKey(_glfw.wl.keyboardFocus, - translateKey(_glfw.wl.keyRepeatScancode), - _glfw.wl.keyRepeatScancode, - GLFW_PRESS, - _glfw.wl.xkb.modifiers); - inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode); + 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); + } + + event = GLFW_TRUE; } - event = GLFW_TRUE; } }