summaryrefslogtreecommitdiffstats
path: root/platform/macos/display_server_macos.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/macos/display_server_macos.mm')
-rw-r--r--platform/macos/display_server_macos.mm8
1 files changed, 8 insertions, 0 deletions
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm
index e79d6acc3f..d416a567ac 100644
--- a/platform/macos/display_server_macos.mm
+++ b/platform/macos/display_server_macos.mm
@@ -1885,6 +1885,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: {
@@ -1952,6 +1954,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:
@@ -2031,6 +2036,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;
}