Browse Source

windows: Don't allow non-resizable windows to be maximized.

Fixes #6346.

(cherry picked from commit d275851dfbd586910ddf1fbed8ef54714afbe6c4)
Ryan C. Gordon 1 year ago
parent
commit
ecccf6f9ca
1 changed files with 10 additions and 5 deletions
  1. 10 5
      src/video/windows/SDL_windowswindow.c

+ 10 - 5
src/video/windows/SDL_windowswindow.c

@@ -928,11 +928,16 @@ void WIN_RaiseWindow(SDL_VideoDevice *_this, SDL_Window *window)
 
 void WIN_MaximizeWindow(SDL_VideoDevice *_this, SDL_Window *window)
 {
-    SDL_WindowData *data = window->driverdata;
-    HWND hwnd = data->hwnd;
-    data->expected_resize = SDL_TRUE;
-    ShowWindow(hwnd, SW_MAXIMIZE);
-    data->expected_resize = SDL_FALSE;
+    /* Other platforms refuse to maximize a non-resizable window, and with win32,
+       the OS resizes the window weirdly (covering the taskbar) if you don't have
+       the STYLE_RESIZABLE flag set. So just forbid it for now. */
+    if (window->flags & SDL_WINDOW_RESIZABLE) {
+        SDL_WindowData *data = window->driverdata;
+        HWND hwnd = data->hwnd;
+        data->expected_resize = SDL_TRUE;
+        ShowWindow(hwnd, SW_MAXIMIZE);
+        data->expected_resize = SDL_FALSE;
+    }
 }
 
 void WIN_MinimizeWindow(SDL_VideoDevice *_this, SDL_Window *window)