diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 91ec8e9bcdc..71d28040de7 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2998,16 +2998,19 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { break; } - if (unsaved_cache && !p_confirmed) { - confirmation->set_ok_button_text(TTR("Save & Reload")); - unsaved_message = _get_unsaved_scene_dialog_text(scene_filename, started_timestamp); - confirmation->set_text(unsaved_message + "\n\n" + TTR("Save before reloading the scene?")); - confirmation->popup_centered(); - break; + if (unsaved_cache) { + if (!p_confirmed) { + confirmation->set_ok_button_text(TTRC("Save & Reload")); + unsaved_message = _get_unsaved_scene_dialog_text(scene_filename, started_timestamp); + confirmation->set_text(unsaved_message + "\n\n" + TTR("Save before reloading the scene?")); + confirmation->popup_centered(); + confirmation_button->grab_focus(); + break; + } else { + _save_scene_with_preview(scene_filename); + } } - _save_scene_with_preview(scene_filename); - _discard_changes(); } break; @@ -7788,7 +7791,7 @@ EditorNode::EditorNode() { gui_base->add_child(orphan_resources); confirmation = memnew(ConfirmationDialog); - confirmation->add_button(TTRC("Don't Save"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "discard"); + confirmation_button = confirmation->add_button(TTRC("Don't Save"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "discard"); gui_base->add_child(confirmation); confirmation->set_min_size(Vector2(450.0 * EDSCALE, 0)); confirmation->connect(SceneStringName(confirmed), callable_mp(this, &EditorNode::_menu_confirm_current)); diff --git a/editor/editor_node.h b/editor/editor_node.h index cf1a0b11c9b..88dd6d9d42c 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -350,6 +350,7 @@ private: Node *_last_instantiated_scene = nullptr; ConfirmationDialog *confirmation = nullptr; + Button *confirmation_button = nullptr; ConfirmationDialog *save_confirmation = nullptr; ConfirmationDialog *import_confirmation = nullptr; ConfirmationDialog *pick_main_scene = nullptr;