mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-26 18:22:09 +02:00
Fix Wayland cursor-shape-v1 cursor not updating
According to https://wayland.app/protocols/cursor-shape-v1#wp_cursor_shape_device_v1:request:set_shape > The serial parameter must match the latest wl_pointer.enter or > zwp_tablet_tool_v2.proximity_in serial number sent to the client. So we can't use wl.serial or wl.pointer_serial, because they are also updated in other places.
This commit is contained in:
2
glfw/wl_init.c
vendored
2
glfw/wl_init.c
vendored
@@ -99,7 +99,7 @@ static void pointerHandleEnter(void* data UNUSED,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
window->wl.decorations.focus = focus;
|
window->wl.decorations.focus = focus;
|
||||||
_glfw.wl.serial = serial; _glfw.wl.input_serial = serial; _glfw.wl.pointer_serial = serial;
|
_glfw.wl.serial = serial; _glfw.wl.input_serial = serial; _glfw.wl.pointer_serial = serial; _glfw.wl.pointer_enter_serial = serial;
|
||||||
_glfw.wl.pointerFocus = window;
|
_glfw.wl.pointerFocus = window;
|
||||||
|
|
||||||
window->wl.hovered = true;
|
window->wl.hovered = true;
|
||||||
|
|||||||
2
glfw/wl_platform.h
vendored
2
glfw/wl_platform.h
vendored
@@ -295,7 +295,7 @@ typedef struct _GLFWlibraryWayland
|
|||||||
|
|
||||||
struct wl_surface* cursorSurface;
|
struct wl_surface* cursorSurface;
|
||||||
GLFWCursorShape cursorPreviousShape;
|
GLFWCursorShape cursorPreviousShape;
|
||||||
uint32_t serial, input_serial, pointer_serial, keyboard_enter_serial;
|
uint32_t serial, input_serial, pointer_serial, pointer_enter_serial, keyboard_enter_serial;
|
||||||
|
|
||||||
int32_t keyboardRepeatRate;
|
int32_t keyboardRepeatRate;
|
||||||
monotonic_t keyboardRepeatDelay;
|
monotonic_t keyboardRepeatDelay;
|
||||||
|
|||||||
2
glfw/wl_window.c
vendored
2
glfw/wl_window.c
vendored
@@ -200,7 +200,7 @@ setCursorImage(_GLFWwindow* window, bool on_theme_change) {
|
|||||||
if (_glfw.wl.wp_cursor_shape_device_v1) {
|
if (_glfw.wl.wp_cursor_shape_device_v1) {
|
||||||
int which = glfw_cursor_shape_to_wayland_cursor_shape(cursorWayland->shape);
|
int which = glfw_cursor_shape_to_wayland_cursor_shape(cursorWayland->shape);
|
||||||
if (which > -1) {
|
if (which > -1) {
|
||||||
wp_cursor_shape_device_v1_set_shape(_glfw.wl.wp_cursor_shape_device_v1, _glfw.wl.serial, (uint32_t)which);
|
wp_cursor_shape_device_v1_set_shape(_glfw.wl.wp_cursor_shape_device_v1, _glfw.wl.pointer_enter_serial, (uint32_t)which);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user