diff options
Diffstat (limited to 'platform/macos/godot_window_delegate.mm')
-rw-r--r-- | platform/macos/godot_window_delegate.mm | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/platform/macos/godot_window_delegate.mm b/platform/macos/godot_window_delegate.mm index 46355b4ae8..e359630d1d 100644 --- a/platform/macos/godot_window_delegate.mm +++ b/platform/macos/godot_window_delegate.mm @@ -157,7 +157,7 @@ DisplayServerMacOS::WindowData &wd = ds->get_window(window_id); if (wd.exclusive_fullscreen) { - [NSApp setPresentationOptions:NSApplicationPresentationDefault]; + ds->update_presentation_mode(); } wd.fullscreen = false; @@ -256,11 +256,7 @@ ds->window_resize(window_id, wd.size.width, wd.size.height); if (!wd.rect_changed_callback.is_null()) { - Variant size = Rect2i(ds->window_get_position(window_id), ds->window_get_size(window_id)); - Variant *sizep = &size; - Variant ret; - Callable::CallError ce; - wd.rect_changed_callback.callp((const Variant **)&sizep, 1, ret, ce); + wd.rect_changed_callback.call(Rect2i(ds->window_get_position(window_id), ds->window_get_size(window_id))); } } @@ -283,11 +279,7 @@ ds->release_pressed_events(); if (!wd.rect_changed_callback.is_null()) { - Variant size = Rect2i(ds->window_get_position(window_id), ds->window_get_size(window_id)); - Variant *sizep = &size; - Variant ret; - Callable::CallError ce; - wd.rect_changed_callback.callp((const Variant **)&sizep, 1, ret, ce); + wd.rect_changed_callback.call(Rect2i(ds->window_get_position(window_id), ds->window_get_size(window_id))); } } @@ -364,4 +356,13 @@ } } +- (void)windowDidChangeOcclusionState:(NSNotification *)notification { + DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton(); + if (!ds || !ds->has_window(window_id)) { + return; + } + DisplayServerMacOS::WindowData &wd = ds->get_window(window_id); + wd.is_visible = ([wd.window_object occlusionState] & NSWindowOcclusionStateVisible) && [wd.window_object isVisible]; +} + @end |