Browse Source

x11display: reenable confined mode on window reconfigure

Fixes #280
rdb 7 years ago
parent
commit
adbab8deae
1 changed files with 15 additions and 0 deletions
  1. 15 0
      panda/src/x11display/x11GraphicsWindow.cxx

+ 15 - 0
panda/src/x11display/x11GraphicsWindow.cxx

@@ -446,6 +446,21 @@ process_events() {
         XConfigureWindow(_display, _xwindow, value_mask, &changes);
         XConfigureWindow(_display, _xwindow, value_mask, &changes);
       }
       }
     }
     }
+
+    // If the window was reconfigured, we may need to re-confine the mouse
+    // pointer.  See GitHub bug #280.
+    if (_properties.get_mouse_mode() == WindowProperties::M_confined) {
+      X11_Cursor cursor = None;
+      if (_properties.get_cursor_hidden()) {
+        x11GraphicsPipe *x11_pipe;
+        DCAST_INTO_V(x11_pipe, _pipe);
+        cursor = x11_pipe->get_hidden_cursor();
+      }
+
+      XGrabPointer(_display, _xwindow, True, 0, GrabModeAsync, GrabModeAsync,
+                   _xwindow, cursor, CurrentTime);
+    }
+
     changed_properties = true;
     changed_properties = true;
   }
   }