diff options
Diffstat (limited to 'editor/editor_node.cpp')
| -rw-r--r-- | editor/editor_node.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 2ec05b0412..c18978cc0d 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -3420,10 +3420,12 @@ void EditorNode::_remove_scene(int index, bool p_change_tab) { } void EditorNode::set_edited_scene(Node *p_scene) { - if (get_editor_data().get_edited_scene_root()) { - if (get_editor_data().get_edited_scene_root()->get_parent() == scene_root) { - scene_root->remove_child(get_editor_data().get_edited_scene_root()); + Node *old_edited_scene_root = get_editor_data().get_edited_scene_root(); + if (old_edited_scene_root) { + if (old_edited_scene_root->get_parent() == scene_root) { + scene_root->remove_child(old_edited_scene_root); } + old_edited_scene_root->disconnect(SNAME("replacing_by"), callable_mp(this, &EditorNode::set_edited_scene)); } get_editor_data().set_edited_scene_root(p_scene); @@ -3439,6 +3441,7 @@ void EditorNode::set_edited_scene(Node *p_scene) { if (p_scene->get_parent() != scene_root) { scene_root->add_child(p_scene, true); } + p_scene->connect(SNAME("replacing_by"), callable_mp(this, &EditorNode::set_edited_scene)); } } |
