From 7ef6efeb662e0833645e4b03b910e054fc7d8a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Thu, 14 Aug 2025 21:38:37 +0200 Subject: [PATCH] Wayland: Fix cursor position after a modal If a modal surface like the window menu was active, clicking on the GLFW window content area to close it would correctly emit the cursor enter event but would not propagate the cursor position from the event. --- README.md | 2 ++ src/wl_window.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index f7c3b07d..c0a473d4 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,8 @@ information on what to include when reporting a bug. - [Wayland] Bugfix: Fallback decorations would show menu at wrong position - [Wayland] Bugfix: The cursor was not updated when clicking through from a modal to a fallback decoration + - [Wayland] Bugfix: The cursor position was not updated when clicking through + from a modal to the content area - [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 ed767055..4220d17e 100644 --- a/src/wl_window.c +++ b/src/wl_window.c @@ -1538,6 +1538,13 @@ static void pointerHandleEnter(void* userData, window->wl.hovered = GLFW_TRUE; _glfwSetCursorWayland(window, window->wl.currentCursor); _glfwInputCursorEnter(window, GLFW_TRUE); + + if (window->cursorMode != GLFW_CURSOR_DISABLED) + { + window->wl.cursorPosX = wl_fixed_to_double(sx); + window->wl.cursorPosY = wl_fixed_to_double(sy); + _glfwInputCursorPos(window, window->wl.cursorPosX, window->wl.cursorPosY); + } } else {