From c7fd0bb740c250b1fd8ccccfd47a33649b555ccc Mon Sep 17 00:00:00 2001 From: Robert Yevdokimov <105675984+ryevdokimov@users.noreply.github.com> Date: Mon, 27 Jan 2025 05:50:27 +0400 Subject: [PATCH] Make save confirmation a child of last exclusive window of EditorNode before popup --- editor/editor_node.cpp | 5 +++++ editor/editor_node.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 4b7abdf2b072..06c32ba77e9e 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5701,6 +5701,10 @@ void EditorNode::_cancel_close_scene_tab() { } } +void EditorNode::_prepare_save_confirmation_popup() { + save_confirmation->reparent(get_last_exclusive_window()); +} + void EditorNode::_toggle_distraction_free_mode() { if (EDITOR_GET("interface/editor/separate_distraction_mode")) { int screen = editor_main_screen->get_selected_index(); @@ -7697,6 +7701,7 @@ EditorNode::EditorNode() { save_confirmation->connect(SceneStringName(confirmed), callable_mp(this, &EditorNode::_menu_confirm_current)); save_confirmation->connect("custom_action", callable_mp(this, &EditorNode::_discard_changes)); save_confirmation->connect("canceled", callable_mp(this, &EditorNode::_cancel_close_scene_tab)); + save_confirmation->connect("about_to_popup", callable_mp(this, &EditorNode::_prepare_save_confirmation_popup)); gradle_build_manage_templates = memnew(ConfirmationDialog); gradle_build_manage_templates->set_text(TTR("Android build template is missing, please install relevant templates.")); diff --git a/editor/editor_node.h b/editor/editor_node.h index b77f6553fe96..e56ecbe45310 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -566,6 +566,8 @@ class EditorNode : public Node { void _scene_tab_closed(int p_tab); void _cancel_close_scene_tab(); + void _prepare_save_confirmation_popup(); + void _inherit_request(String p_file); void _instantiate_request(const Vector &p_files);