diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-09-10 16:00:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-10 16:00:25 +0200 |
commit | fcabf95934953e9dea1335f0b512a4cac2dbcd8a (patch) | |
tree | ed1374bfce5c228c2b28c9e1976350f2e5351540 /editor | |
parent | 04eb6046c58902fa7086a9fd85dc4e0dd5a939fb (diff) | |
parent | c43ffc8917581fda7577058329a30fcd504d592f (diff) |
Merge pull request #21835 from DualMatrix/save_branch
Prevent overwriting open scenes when saving
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_node.cpp | 10 | ||||
-rw-r--r-- | editor/scene_tree_dock.cpp | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 1ae28617f9..3eebb73cdb 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1174,6 +1174,16 @@ void EditorNode::_dialog_action(String p_file) { int scene_idx = (current_option == FILE_SAVE_SCENE || current_option == FILE_SAVE_AS_SCENE) ? -1 : tab_closing; if (file->get_mode() == EditorFileDialog::MODE_SAVE_FILE) { + bool same_open_scene = false; + for (int i = 0; i < editor_data.get_edited_scene_count(); i++) { + if (editor_data.get_scene_path(i) == p_file && i != scene_idx) + same_open_scene = true; + } + + if (same_open_scene) { + show_warning(TTR("Can't overwrite scene that is still open!")); + return; + } _save_default_environment(); _save_scene_with_preview(p_file, scene_idx); diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 18de2a6221..5f2841d2c0 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -1816,6 +1816,13 @@ void SceneTreeDock::_new_scene_from(String p_file) { return; } + if (EditorNode::get_singleton()->is_scene_open(p_file)) { + accept->get_ok()->set_text(TTR("OK")); + accept->set_text(TTR("Can't overwrite scene that is still open!")); + accept->popup_centered_minsize(); + return; + } + Node *base = selection.front()->get(); Map<Node *, Node *> reown; |