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.
This commit is contained in:
Ryan C. Gordon
2026-02-05 18:39:48 -05:00
parent e1b8ad0380
commit 50f3adec77
+12 -13
View File
@@ -2482,12 +2482,12 @@ bool Cocoa_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_Properti
[nswindow setTabbingMode:NSWindowTabbingModeDisallowed]; [nswindow setTabbingMode:NSWindowTabbingModeDisallowed];
if (videodata.allow_spaces) { // we put fullscreen desktop windows in their own Space, without a toggle button or menubar, later
// we put fullscreen desktop windows in their own Space, without a toggle button or menubar, later if ((window->flags & SDL_WINDOW_RESIZABLE) && videodata.allow_spaces) {
if (window->flags & SDL_WINDOW_RESIZABLE) { // resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar.
// 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];
} }
// Create a default view for this window // Create a default view for this window
@@ -2947,13 +2947,12 @@ void Cocoa_SetWindowResizable(SDL_VideoDevice *_this, SDL_Window *window, bool r
if (![listener isInFullscreenSpace] && ![listener isInFullscreenSpaceTransition]) { if (![listener isInFullscreenSpace] && ![listener isInFullscreenSpaceTransition]) {
SetWindowStyle(window, GetWindowStyle(window)); SetWindowStyle(window, GetWindowStyle(window));
} }
if (videodata.allow_spaces) {
if (resizable) { if (resizable && videodata.allow_spaces) {
// resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. // resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar.
[nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
} else { } else {
[nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged]; [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenNone];
}
} }
} }
} }