mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-25 17:52:02 +02:00
Wayland: Fix key repeat being stopped by the release of an unrelated key
Fixes #2191
This commit is contained in:
@@ -20,6 +20,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
|
|||||||
- Preserve lines in the scrollback if a scrolling region is defined that
|
- Preserve lines in the scrollback if a scrolling region is defined that
|
||||||
is contiguous with the top of the screen (:iss:`3113`)
|
is contiguous with the top of the screen (:iss:`3113`)
|
||||||
|
|
||||||
|
- Wayland: Fix key repeat being stopped by the release of an unrelated key
|
||||||
|
(:iss:`2191`)
|
||||||
|
|
||||||
|
|
||||||
0.19.2 [2020-11-13]
|
0.19.2 [2020-11-13]
|
||||||
-------------------
|
-------------------
|
||||||
|
|||||||
6
glfw/wl_init.c
vendored
6
glfw/wl_init.c
vendored
@@ -446,7 +446,6 @@ static void keyboardHandleKey(void* data UNUSED,
|
|||||||
_glfw.wl.serial = serial;
|
_glfw.wl.serial = serial;
|
||||||
glfw_xkb_handle_key_event(window, &_glfw.wl.xkb, key, action);
|
glfw_xkb_handle_key_event(window, &_glfw.wl.xkb, key, action);
|
||||||
bool repeatable = false;
|
bool repeatable = false;
|
||||||
_glfw.wl.keyRepeatInfo.key = 0;
|
|
||||||
|
|
||||||
if (action == GLFW_PRESS && _glfw.wl.keyboardRepeatRate > 0 && glfw_xkb_should_repeat(&_glfw.wl.xkb, key))
|
if (action == GLFW_PRESS && _glfw.wl.keyboardRepeatRate > 0 && glfw_xkb_should_repeat(&_glfw.wl.xkb, key))
|
||||||
{
|
{
|
||||||
@@ -456,8 +455,11 @@ static void keyboardHandleKey(void* data UNUSED,
|
|||||||
}
|
}
|
||||||
if (repeatable) {
|
if (repeatable) {
|
||||||
changeTimerInterval(&_glfw.wl.eventLoopData, _glfw.wl.keyRepeatInfo.keyRepeatTimer, _glfw.wl.keyboardRepeatDelay);
|
changeTimerInterval(&_glfw.wl.eventLoopData, _glfw.wl.keyRepeatInfo.keyRepeatTimer, _glfw.wl.keyboardRepeatDelay);
|
||||||
|
toggleTimer(&_glfw.wl.eventLoopData, _glfw.wl.keyRepeatInfo.keyRepeatTimer, 1);
|
||||||
|
} else if (action == GLFW_RELEASE && key == _glfw.wl.keyRepeatInfo.key) {
|
||||||
|
_glfw.wl.keyRepeatInfo.key = 0;
|
||||||
|
toggleTimer(&_glfw.wl.eventLoopData, _glfw.wl.keyRepeatInfo.keyRepeatTimer, 0);
|
||||||
}
|
}
|
||||||
toggleTimer(&_glfw.wl.eventLoopData, _glfw.wl.keyRepeatInfo.keyRepeatTimer, repeatable ? 1 : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void keyboardHandleModifiers(void* data UNUSED,
|
static void keyboardHandleModifiers(void* data UNUSED,
|
||||||
|
|||||||
Reference in New Issue
Block a user