diff --git a/src/x11_window.c b/src/x11_window.c index 4f095b4f..41d5967c 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -1367,6 +1367,9 @@ static void processEvent(XEvent *event) case FocusIn: { + if (window->cursorMode == GLFW_CURSOR_DISABLED) + _glfwPlatformSetCursorMode(window, GLFW_CURSOR_DISABLED); + if (event->xfocus.mode == NotifyGrab || event->xfocus.mode == NotifyUngrab) { @@ -1378,15 +1381,15 @@ static void processEvent(XEvent *event) if (window->x11.ic) XSetICFocus(window->x11.ic); - if (window->cursorMode == GLFW_CURSOR_DISABLED) - _glfwPlatformSetCursorMode(window, GLFW_CURSOR_DISABLED); - _glfwInputWindowFocus(window, GLFW_TRUE); return; } case FocusOut: { + if (window->cursorMode == GLFW_CURSOR_DISABLED) + _glfwPlatformSetCursorMode(window, GLFW_CURSOR_NORMAL); + if (event->xfocus.mode == NotifyGrab || event->xfocus.mode == NotifyUngrab) { @@ -1398,9 +1401,6 @@ static void processEvent(XEvent *event) if (window->x11.ic) XUnsetICFocus(window->x11.ic); - if (window->cursorMode == GLFW_CURSOR_DISABLED) - _glfwPlatformSetCursorMode(window, GLFW_CURSOR_NORMAL); - if (window->monitor && window->autoIconify) _glfwPlatformIconifyWindow(window);