|
@@ -2671,6 +2671,30 @@ Vector2i DisplayServerMacOS::window_get_safe_title_margins(WindowID p_window) co
|
|
|
return Vector2i(max_x * screen_get_max_scale(), 0);
|
|
|
}
|
|
|
|
|
|
+void DisplayServerMacOS::window_set_custom_window_buttons(WindowData &p_wd, bool p_enabled) {
|
|
|
+ if (p_wd.window_button_view) {
|
|
|
+ [p_wd.window_button_view removeFromSuperview];
|
|
|
+ p_wd.window_button_view = nil;
|
|
|
+ }
|
|
|
+ if (p_enabled) {
|
|
|
+ float window_buttons_spacing = NSMinX([[p_wd.window_object standardWindowButton:NSWindowMiniaturizeButton] frame]) - NSMinX([[p_wd.window_object standardWindowButton:NSWindowCloseButton] frame]);
|
|
|
+
|
|
|
+ [p_wd.window_object setTitleVisibility:NSWindowTitleHidden];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowZoomButton] setHidden:YES];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowCloseButton] setHidden:YES];
|
|
|
+
|
|
|
+ p_wd.window_button_view = [[GodotButtonView alloc] initWithFrame:NSZeroRect];
|
|
|
+ [p_wd.window_button_view initButtons:window_buttons_spacing offset:NSMakePoint(p_wd.wb_offset.x, p_wd.wb_offset.y)];
|
|
|
+ [p_wd.window_view addSubview:p_wd.window_button_view];
|
|
|
+ } else {
|
|
|
+ [p_wd.window_object setTitleVisibility:NSWindowTitleVisible];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowZoomButton] setHidden:NO];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowMiniaturizeButton] setHidden:NO];
|
|
|
+ [[p_wd.window_object standardWindowButton:NSWindowCloseButton] setHidden:NO];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void DisplayServerMacOS::window_set_flag(WindowFlags p_flag, bool p_enabled, WindowID p_window) {
|
|
|
_THREAD_SAFE_METHOD_
|
|
|
|
|
@@ -2691,31 +2715,20 @@ void DisplayServerMacOS::window_set_flag(WindowFlags p_flag, bool p_enabled, Win
|
|
|
} break;
|
|
|
case WINDOW_FLAG_EXTEND_TO_TITLE: {
|
|
|
NSRect rect = [wd.window_object frame];
|
|
|
- if (wd.window_button_view) {
|
|
|
- [wd.window_button_view removeFromSuperview];
|
|
|
- wd.window_button_view = nil;
|
|
|
- }
|
|
|
if (p_enabled) {
|
|
|
[wd.window_object setTitlebarAppearsTransparent:YES];
|
|
|
- [wd.window_object setTitleVisibility:NSWindowTitleHidden];
|
|
|
[wd.window_object setStyleMask:[wd.window_object styleMask] | NSWindowStyleMaskFullSizeContentView];
|
|
|
|
|
|
- [[wd.window_object standardWindowButton:NSWindowZoomButton] setHidden:YES];
|
|
|
- [[wd.window_object standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
|
|
|
- [[wd.window_object standardWindowButton:NSWindowCloseButton] setHidden:YES];
|
|
|
- float window_buttons_spacing = NSMinX([[wd.window_object standardWindowButton:NSWindowMiniaturizeButton] frame]) - NSMinX([[wd.window_object standardWindowButton:NSWindowCloseButton] frame]);
|
|
|
-
|
|
|
- wd.window_button_view = [[GodotButtonView alloc] initWithFrame:NSZeroRect];
|
|
|
- [wd.window_button_view initButtons:window_buttons_spacing offset:NSMakePoint(wd.wb_offset.x, wd.wb_offset.y)];
|
|
|
- [wd.window_view addSubview:wd.window_button_view];
|
|
|
+ if (!wd.fullscreen) {
|
|
|
+ window_set_custom_window_buttons(wd, true);
|
|
|
+ }
|
|
|
} else {
|
|
|
[wd.window_object setTitlebarAppearsTransparent:NO];
|
|
|
- [wd.window_object setTitleVisibility:NSWindowTitleVisible];
|
|
|
[wd.window_object setStyleMask:[wd.window_object styleMask] & ~NSWindowStyleMaskFullSizeContentView];
|
|
|
|
|
|
- [[wd.window_object standardWindowButton:NSWindowZoomButton] setHidden:NO];
|
|
|
- [[wd.window_object standardWindowButton:NSWindowMiniaturizeButton] setHidden:NO];
|
|
|
- [[wd.window_object standardWindowButton:NSWindowCloseButton] setHidden:NO];
|
|
|
+ if (!wd.fullscreen) {
|
|
|
+ window_set_custom_window_buttons(wd, false);
|
|
|
+ }
|
|
|
}
|
|
|
[wd.window_object setFrame:rect display:YES];
|
|
|
} break;
|