Kaynağa Gözat

windisplay: Fix M_confined mode confining cursor to incorrect region

It should be confined to the client rect, not the window rect.

Fixes #929
rdb 5 yıl önce
ebeveyn
işleme
4b00f9e660
1 değiştirilmiş dosya ile 9 ekleme ve 13 silme
  1. 9 13
      panda/src/windisplay/winGraphicsWindow.cxx

+ 9 - 13
panda/src/windisplay/winGraphicsWindow.cxx

@@ -1311,22 +1311,18 @@ track_mouse_leaving(HWND hwnd) {
 bool WinGraphicsWindow::
 confine_cursor() {
   RECT clip;
-  if (!GetWindowRect(_hWnd, &clip)) {
+  get_client_rect_screen(_hWnd, &clip);
+
+  windisplay_cat.info()
+    << "ClipCursor() to " << clip.left << "," << clip.top << " to "
+    << clip.right << "," << clip.bottom << endl;
+
+  if (!ClipCursor(&clip)) {
     windisplay_cat.warning()
-      << "GetWindowRect() failed, cannot confine cursor.\n";
+      << "Failed to confine cursor to window.\n";
     return false;
   } else {
-    windisplay_cat.info()
-      << "ClipCursor() to " << clip.left << "," << clip.top << " to "
-      << clip.right << "," << clip.bottom << endl;
-
-    if (!ClipCursor(&clip)) {
-      windisplay_cat.warning()
-        << "Failed to confine cursor to window.\n";
-      return false;
-    } else {
-      return true;
-    }
+    return true;
   }
 }