Browse Source

[macOS] Allow non-resizeable windows to enter fullscreen mode.

(cherry picked from commit 7c7182483f50edae81f92bd4d4ad627f1b3ca57c)
bruvzg 6 years ago
parent
commit
d9aa43e793
1 changed files with 5 additions and 1 deletions
  1. 5 1
      platform/osx/os_osx.mm

+ 5 - 1
platform/osx/os_osx.mm

@@ -271,6 +271,8 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
 
 
 - (void)windowDidExitFullScreen:(NSNotification *)notification {
 - (void)windowDidExitFullScreen:(NSNotification *)notification {
 	OS_OSX::singleton->zoomed = false;
 	OS_OSX::singleton->zoomed = false;
+	if (!OS_OSX::singleton->resizable)
+		[OS_OSX::singleton->window_object setStyleMask:[OS_OSX::singleton->window_object styleMask] & ~NSWindowStyleMaskResizable];
 }
 }
 
 
 - (void)windowDidChangeBackingProperties:(NSNotification *)notification {
 - (void)windowDidChangeBackingProperties:(NSNotification *)notification {
@@ -2300,6 +2302,8 @@ void OS_OSX::set_window_fullscreen(bool p_enabled) {
 	if (zoomed != p_enabled) {
 	if (zoomed != p_enabled) {
 		if (layered_window)
 		if (layered_window)
 			set_window_per_pixel_transparency_enabled(false);
 			set_window_per_pixel_transparency_enabled(false);
+		if (!resizable)
+			[window_object setStyleMask:[window_object styleMask] | NSWindowStyleMaskResizable];
 		[window_object toggleFullScreen:nil];
 		[window_object toggleFullScreen:nil];
 	}
 	}
 	zoomed = p_enabled;
 	zoomed = p_enabled;
@@ -2314,7 +2318,7 @@ void OS_OSX::set_window_resizable(bool p_enabled) {
 
 
 	if (p_enabled)
 	if (p_enabled)
 		[window_object setStyleMask:[window_object styleMask] | NSWindowStyleMaskResizable];
 		[window_object setStyleMask:[window_object styleMask] | NSWindowStyleMaskResizable];
-	else
+	else if (!zoomed)
 		[window_object setStyleMask:[window_object styleMask] & ~NSWindowStyleMaskResizable];
 		[window_object setStyleMask:[window_object styleMask] & ~NSWindowStyleMaskResizable];
 
 
 	resizable = p_enabled;
 	resizable = p_enabled;