diff --git a/glfw/x11_window.c b/glfw/x11_window.c index d35465573..a640a47c7 100644 --- a/glfw/x11_window.c +++ b/glfw/x11_window.c @@ -2460,11 +2460,19 @@ int _glfwPlatformWindowHovered(_GLFWwindow* window) int rootX, rootY, childX, childY; unsigned int mask; - if (!XQueryPointer(_glfw.x11.display, w, - &root, &w, &rootX, &rootY, &childX, &childY, &mask)) - { + _glfwGrabErrorHandlerX11(); + + const Bool result = XQueryPointer(_glfw.x11.display, w, + &root, &w, &rootX, &rootY, + &childX, &childY, &mask); + + _glfwReleaseErrorHandlerX11(); + + if (_glfw.x11.errorCode == BadWindow) + w = _glfw.x11.root; + + if (!result) return false; - } if (w == window->x11.handle) return true;