瀏覽代碼

Make sure we don't clip the cursor while clicking on the window title bar

Sam Lantinga 12 年之前
父節點
當前提交
2a6213ad02
共有 3 個文件被更改,包括 16 次插入1 次删除
  1. 14 0
      src/video/windows/SDL_windowsevents.c
  2. 1 1
      src/video/windows/SDL_windowswindow.c
  3. 1 0
      src/video/windows/SDL_windowswindow.h

+ 14 - 0
src/video/windows/SDL_windowsevents.c

@@ -570,6 +570,20 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
         break;
         break;
 #endif /* WM_INPUTLANGCHANGE */
 #endif /* WM_INPUTLANGCHANGE */
 
 
+    case WM_NCLBUTTONDOWN:
+        {
+            data->in_title_click = SDL_TRUE;
+            WIN_UpdateClipCursor(data->window);
+        }
+        break;
+
+    case WM_NCMOUSELEAVE:
+        {
+            data->in_title_click = SDL_FALSE;
+            WIN_UpdateClipCursor(data->window);
+        }
+        break;
+
     case WM_ENTERSIZEMOVE:
     case WM_ENTERSIZEMOVE:
     case WM_ENTERMENULOOP:
     case WM_ENTERMENULOOP:
         {
         {

+ 1 - 1
src/video/windows/SDL_windowswindow.c

@@ -746,7 +746,7 @@ WIN_UpdateClipCursor(SDL_Window *window)
     SDL_Mouse *mouse = SDL_GetMouse();
     SDL_Mouse *mouse = SDL_GetMouse();
 
 
     /* Don't clip the cursor while we're in the modal resize or move loop */
     /* Don't clip the cursor while we're in the modal resize or move loop */
-    if (data->in_modal_loop) {
+    if (data->in_title_click || data->in_modal_loop) {
         ClipCursor(NULL);
         ClipCursor(NULL);
         return;
         return;
     }
     }

+ 1 - 0
src/video/windows/SDL_windowswindow.h

@@ -38,6 +38,7 @@ typedef struct
     SDL_bool created;
     SDL_bool created;
     WPARAM mouse_button_flags;
     WPARAM mouse_button_flags;
     BOOL expected_resize;
     BOOL expected_resize;
+    SDL_bool in_title_click;
     SDL_bool in_modal_loop;
     SDL_bool in_modal_loop;
     struct SDL_VideoData *videodata;
     struct SDL_VideoData *videodata;
 #if SDL_VIDEO_OPENGL_EGL  
 #if SDL_VIDEO_OPENGL_EGL