diff options
Diffstat (limited to 'platform/macos/display_server_macos.mm')
-rw-r--r-- | platform/macos/display_server_macos.mm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm index 4e1ceac8bf..1fd1a46dba 100644 --- a/platform/macos/display_server_macos.mm +++ b/platform/macos/display_server_macos.mm @@ -1887,6 +1887,8 @@ Error DisplayServerMacOS::file_dialog_show(const String &p_title, const String & } } + WindowID prev_focus = last_focused_window; + Callable callback = p_callback; // Make a copy for async completion handler. switch (p_mode) { case FILE_DIALOG_MODE_SAVE_FILE: { @@ -1954,6 +1956,9 @@ Error DisplayServerMacOS::file_dialog_show(const String &p_title, const String & callback.callp((const Variant **)&v_args, 2, ret, ce); } } + if (prev_focus != INVALID_WINDOW_ID) { + callable_mp(DisplayServer::get_singleton(), &DisplayServer::window_move_to_foreground).call_deferred(prev_focus); + } }]; } break; case FILE_DIALOG_MODE_OPEN_ANY: @@ -2033,6 +2038,9 @@ Error DisplayServerMacOS::file_dialog_show(const String &p_title, const String & callback.callp((const Variant **)&v_args, 2, ret, ce); } } + if (prev_focus != INVALID_WINDOW_ID) { + callable_mp(DisplayServer::get_singleton(), &DisplayServer::window_move_to_foreground).call_deferred(prev_focus); + } }]; } break; } |