Skip to content

Commit 90191a5

Browse files
committed
Merge pull request #108651 from Alex2782/fix_save_confirmation
Prompt to save modified scene missing when quitting editor with running project.
2 parents 04524f4 + 7697b70 commit 90191a5

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

editor/editor_node.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3312,8 +3312,14 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
33123312
p_confirmed = false;
33133313
}
33143314

3315+
if (p_confirmed && stop_project_confirmation && project_run_bar->is_playing()) {
3316+
project_run_bar->stop_playing();
3317+
stop_project_confirmation = false;
3318+
p_confirmed = false;
3319+
}
3320+
33153321
if (!p_confirmed) {
3316-
if (project_run_bar->is_playing()) {
3322+
if (!stop_project_confirmation && project_run_bar->is_playing()) {
33173323
if (p_option == PROJECT_RELOAD_CURRENT_PROJECT) {
33183324
confirmation->set_text(TTR("Stop running project before reloading the current project?"));
33193325
confirmation->set_ok_button_text(TTR("Stop & Reload"));
@@ -3324,6 +3330,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
33243330
confirmation->reset_size();
33253331
confirmation->popup_centered();
33263332
confirmation_button->hide();
3333+
stop_project_confirmation = true;
33273334
break;
33283335
}
33293336

@@ -6211,6 +6218,10 @@ void EditorNode::_cancel_close_scene_tab() {
62116218
tabs_to_close.clear();
62126219
}
62136220

6221+
void EditorNode::_cancel_confirmation() {
6222+
stop_project_confirmation = false;
6223+
}
6224+
62146225
void EditorNode::_prepare_save_confirmation_popup() {
62156226
if (save_confirmation->get_window() != get_last_exclusive_window()) {
62166227
save_confirmation->reparent(get_last_exclusive_window());
@@ -8412,6 +8423,7 @@ EditorNode::EditorNode() {
84128423
confirmation->set_min_size(Vector2(450.0 * EDSCALE, 0));
84138424
confirmation->connect(SceneStringName(confirmed), callable_mp(this, &EditorNode::_menu_confirm_current));
84148425
confirmation->connect("custom_action", callable_mp(this, &EditorNode::_discard_changes));
8426+
confirmation->connect("canceled", callable_mp(this, &EditorNode::_cancel_confirmation));
84158427

84168428
save_confirmation = memnew(ConfirmationDialog);
84178429
save_confirmation->add_button(TTRC("Don't Save"), DisplayServer::get_singleton()->get_swap_cancel_ok(), "discard");

editor/editor_node.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ class EditorNode : public Node {
376376
Node *_last_instantiated_scene = nullptr;
377377

378378
ConfirmationDialog *confirmation = nullptr;
379+
bool stop_project_confirmation = false;
379380
Button *confirmation_button = nullptr;
380381
ConfirmationDialog *save_confirmation = nullptr;
381382
ConfirmationDialog *import_confirmation = nullptr;
@@ -598,6 +599,7 @@ class EditorNode : public Node {
598599
void _discard_changes(const String &p_str = String());
599600
void _scene_tab_closed(int p_tab);
600601
void _cancel_close_scene_tab();
602+
void _cancel_confirmation();
601603

602604
void _prepare_save_confirmation_popup();
603605

0 commit comments

Comments
 (0)