From d76ee09774c546476b350c15a4197d2b9ae160dc Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 20 Jun 2016 22:57:07 -0300 Subject: property remove parent owned nodes when using replace, fixes #4128 --- tools/editor/scene_tree_dock.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'tools/editor') diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 69d6d97980..30ffdf6664 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -1388,6 +1388,13 @@ void SceneTreeDock::_create() { } String newname=n->get_name(); + + List to_erase; + for(int i=0;iget_child_count();i++) { + if (n->get_child(i)->get_owner()==NULL && n->is_owned_by_parent()) { + to_erase.push_back(n->get_child(i)); + } + } n->replace_by(newnode,true); if (n==edited_scene) { @@ -1408,6 +1415,11 @@ void SceneTreeDock::_create() { memdelete(n); + while(to_erase.front()) { + memdelete(to_erase.front()->get()); + to_erase.pop_front(); + } + } -- cgit v1.2.3