Bläddra i källkod

If the client rect is empty, use the last known window size

This happens on Windows 11 with fullscreen desktop windows when the desktop is brought up with the Windows+D shortcut.

Fixes https://github.com/libsdl-org/SDL/issues/7419

(cherry picked from commit 2ca727aec6f5f264620f80999beb5ef77eefec4a)
Sam Lantinga 3 år sedan
förälder
incheckning
46d143376a
2 ändrade filer med 4 tillägg och 5 borttagningar
  1. 1 2
      src/video/windows/SDL_windowsevents.c
  2. 3 3
      src/video/windows/SDL_windowswindow.c

+ 1 - 2
src/video/windows/SDL_windowsevents.c

@@ -1349,8 +1349,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
                 RECT rect;
                 RECT rect;
                 float x, y;
                 float x, y;
 
 
-                if (!GetClientRect(hwnd, &rect) ||
-                    (rect.right == rect.left && rect.bottom == rect.top)) {
+                if (!GetClientRect(hwnd, &rect) || IsRectEmpty(&rect)) {
                     if (inputs) {
                     if (inputs) {
                         SDL_small_free(inputs, isstack);
                         SDL_small_free(inputs, isstack);
                     }
                     }

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

@@ -779,12 +779,12 @@ void WIN_GetWindowSizeInPixels(_THIS, SDL_Window *window, int *w, int *h)
     HWND hwnd = data->hwnd;
     HWND hwnd = data->hwnd;
     RECT rect;
     RECT rect;
 
 
-    if (GetClientRect(hwnd, &rect)) {
+    if (GetClientRect(hwnd, &rect) && !IsRectEmpty(&rect)) {
         *w = rect.right;
         *w = rect.right;
         *h = rect.bottom;
         *h = rect.bottom;
     } else {
     } else {
-        *w = 0;
-        *h = 0;
+        *w = window->w;
+        *h = window->h;
     }
     }
 }
 }