From 62993d9391469e87c3c69592d436122d73db8b07 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 0ae3b4c8..5e916107 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; }