浏览代码

Merge pull request #84649 from bruvzg/mac_fs_fs_switch

[macOS] Fix fullscreen <-> exclusive fullscreen transition.
Rémi Verschelde 1 年之前
父节点
当前提交
03d97977b1
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      platform/macos/display_server_macos.mm

+ 13 - 0
platform/macos/display_server_macos.mm

@@ -3282,6 +3282,18 @@ void DisplayServerMacOS::window_set_mode(WindowMode p_mode, WindowID p_window) {
 		} break;
 		} break;
 		case WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
 		case WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
 		case WINDOW_MODE_FULLSCREEN: {
 		case WINDOW_MODE_FULLSCREEN: {
+			if (p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN || p_mode == WINDOW_MODE_FULLSCREEN) {
+				if (p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN) {
+					const NSUInteger presentationOptions = NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar;
+					[NSApp setPresentationOptions:presentationOptions];
+					wd.exclusive_fullscreen = true;
+				} else {
+					wd.exclusive_fullscreen = false;
+					update_presentation_mode();
+				}
+				return;
+			}
+
 			[(NSWindow *)wd.window_object setLevel:NSNormalWindowLevel];
 			[(NSWindow *)wd.window_object setLevel:NSNormalWindowLevel];
 			_set_window_per_pixel_transparency_enabled(true, p_window);
 			_set_window_per_pixel_transparency_enabled(true, p_window);
 			if (wd.resize_disabled) { // Restore resize disabled.
 			if (wd.resize_disabled) { // Restore resize disabled.
@@ -3335,6 +3347,7 @@ void DisplayServerMacOS::window_set_mode(WindowMode p_mode, WindowID p_window) {
 				wd.exclusive_fullscreen = true;
 				wd.exclusive_fullscreen = true;
 			} else {
 			} else {
 				wd.exclusive_fullscreen = false;
 				wd.exclusive_fullscreen = false;
+				update_presentation_mode();
 			}
 			}
 		} break;
 		} break;
 		case WINDOW_MODE_MAXIMIZED: {
 		case WINDOW_MODE_MAXIMIZED: {