Explorar o código

X11: Re-enable cursor for all types of FocusOut

This prevents disabled cursor mode from interfering with window frame
interactions.

Related to #650.
Camilla Berglund %!s(int64=9) %!d(string=hai) anos
pai
achega
28d4c9e9f4
Modificáronse 1 ficheiros con 6 adicións e 6 borrados
  1. 6 6
      src/x11_window.c

+ 6 - 6
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);