aboutsummaryrefslogtreecommitdiff
path: root/tools/editor/editor_node.cpp
diff options
context:
space:
mode:
authorJulian Murgia - StraToN2015-11-19 14:15:17 +0100
committerJulian Murgia - StraToN2015-11-19 14:15:17 +0100
commit6d20ded6d7d776a0397ba8bd3f9e8250d2c4d9ff (patch)
treebfd9a4296701ac9de8db8666c96c391d4a546458 /tools/editor/editor_node.cpp
parent9fe85da881205f68ed949a1370ddd162ec331dc7 (diff)
downloadgodot-6d20ded6d7d776a0397ba8bd3f9e8250d2c4d9ff.tar.gz
godot-6d20ded6d7d776a0397ba8bd3f9e8250d2c4d9ff.tar.zst
godot-6d20ded6d7d776a0397ba8bd3f9e8250d2c4d9ff.zip
Ask confirmation on closing a scene tab
Diffstat (limited to 'tools/editor/editor_node.cpp')
-rw-r--r--tools/editor/editor_node.cpp36
1 files changed, 26 insertions, 10 deletions
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index 5b9489992..b8b2a5262 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -2012,6 +2012,11 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
} break;
+ case SCENE_TAB_CLOSE: {
+ _remove_scene(tab_closing);
+ _update_scene_tabs();
+ current_option = -1;
+ } break;
case FILE_SAVE_SCENE: {
@@ -2023,7 +2028,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
return;
};
// fallthrough to save_as
- };
+ } break;
case FILE_SAVE_AS_SCENE: {
Node *scene = editor_data.get_edited_scene_root();
@@ -2957,23 +2962,23 @@ void EditorNode::_remove_edited_scene() {
_update_title();
_update_scene_tabs();
- if (editor_data.get_edited_scene_count()==1) {
- //make new scene appear saved
- set_current_version(editor_data.get_undo_redo().get_version());
- unsaved_cache=false;
- }
+// if (editor_data.get_edited_scene_count()==1) {
+// //make new scene appear saved
+// set_current_version(editor_data.get_undo_redo().get_version());
+// unsaved_cache=false;
+// }
}
void EditorNode::_remove_scene(int index) {
// printf("Attempting to remove scene %d (current is %d)\n", index, editor_data.get_edited_scene());
+
if (editor_data.get_edited_scene() == index) {
//Scene to remove is current scene
_remove_edited_scene();
}
else {
- // Scene to remove is not active scene.");
+ // Scene to remove is not active scene
editor_data.remove_scene(index);
- editor_data.get_undo_redo().clear_history();
}
}
@@ -4469,8 +4474,19 @@ void EditorNode::_scene_tab_script_edited(int p_tab) {
}
void EditorNode::_scene_tab_closed(int p_tab) {
- _remove_scene(p_tab);
- _update_scene_tabs();
+ current_option = SCENE_TAB_CLOSE;
+ tab_closing = p_tab;
+ if (unsaved_cache) {
+ confirmation->get_ok()->set_text("Yes");
+ //confirmation->get_cancel()->show();
+ confirmation->set_text("Close scene? (Unsaved changes will be lost)");
+ confirmation->popup_centered_minsize();
+ }
+ else {
+ _remove_scene(p_tab);
+ //_update_scene_tabs();
+ }
+
}