From 6c5d50d11a433fa0c92bbb0a64360ab4c94a0f3a Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Fri, 26 Oct 2018 13:22:10 +0900 Subject: [PATCH] x11 window: update cursor position on enter event click events would have an incorrect position after changing workspace, if the mouse didn't move in between. (Another example where this matters is a new window, if it appears under the cursor, clicking would lead the application to think the user clicked at 0,0) --- src/x11_window.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/x11_window.c b/src/x11_window.c index c01cf17ec..50be9e389 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -1455,12 +1455,20 @@ static void processEvent(XEvent *event) case EnterNotify: { + // XEnterWindowEvent is XCrossingEvent + const int x = event->xcrossing.x; + const int y = event->xcrossing.y; + // HACK: This is a workaround for WMs (KWM, Fluxbox) that otherwise // ignore the defined cursor for hidden cursor mode if (window->cursorMode == GLFW_CURSOR_HIDDEN) updateCursorImage(window); _glfwInputCursorEnter(window, GLFW_TRUE); + _glfwInputCursorPos(window, x, y); + + window->x11.lastCursorPosX = x; + window->x11.lastCursorPosY = y; return; }