Kaynağa Gözat

cocoa: Fix SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES=0.

This hint is documented to not just turn off fullscreen windows going into a
new Fullscreen Space, but also to make the green button on a resizeable
window's title bar do a maximize/zoom instead of make the window fullscreen.

Previously, this only did the former and not the latter (or perhaps it worked
and the defaults changed in a newer macOS, we aren't sure).

Fixes #7470.

(cherry picked from commit 50f3adec7736a5dd9223e217e46d3abc1f95d790)
Ryan C. Gordon 4 hafta önce
ebeveyn
işleme
649c36c576
1 değiştirilmiş dosya ile 10 ekleme ve 12 silme
  1. 10 12
      src/video/cocoa/SDL_cocoawindow.m

+ 10 - 12
src/video/cocoa/SDL_cocoawindow.m

@@ -1814,12 +1814,12 @@ int Cocoa_CreateWindow(_THIS, SDL_Window * window)
     }
 #endif
 
-    if (videodata.allow_spaces) {
+    /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */
+    if ((window->flags & SDL_WINDOW_RESIZABLE) && videodata.allow_spaces) {
         /* we put FULLSCREEN_DESKTOP windows in their own Space, without a toggle button or menubar, later */
-        if (window->flags & SDL_WINDOW_RESIZABLE) {
-            /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */
-            [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
-        }
+        [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
+    } else {
+        [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenNone];
     }
 
     if (window->flags & SDL_WINDOW_ALWAYS_ON_TOP) {
@@ -2124,13 +2124,11 @@ void Cocoa_SetWindowResizable(_THIS, SDL_Window * window, SDL_bool resizable)
     if (![listener isInFullscreenSpace]) {
         SetWindowStyle(window, GetWindowStyle(window));
     }
-    if (videodata.allow_spaces) {
-        if (resizable) {
-            /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */
-            [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
-        } else {
-            [nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged];
-        }
+    if (resizable && videodata.allow_spaces) {
+        /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */
+        [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
+    } else {
+        [nswindow setCollectionBehavior:NSWindowCollectionBehaviorNone];
     }
 }}