fix remove_and_skip()

(cherry picked from commit 3f78f1f17d)
This commit is contained in:
AlexHolly 2017-03-12 18:50:43 +01:00 committed by Rémi Verschelde
parent 94653f0e88
commit cf7ba8e390
1 changed files with 8 additions and 7 deletions

15
scene/main/node.cpp Normal file → Executable file
View File

@ -1317,12 +1317,13 @@ void Node::remove_and_skip() {
bool clear = true;
for (int i = 0; i < data.children.size(); i++) {
if (!data.children[i]->get_owner())
Node *c_node = data.children[i];
if (!c_node->get_owner())
continue;
remove_child(data.children[i]);
data.children[i]->_propagate_replace_owner(this, NULL);
children.push_back(data.children[i]);
remove_child(c_node);
c_node->_propagate_replace_owner(this, NULL);
children.push_back(c_node);
clear = false;
break;
}
@ -1333,9 +1334,9 @@ void Node::remove_and_skip() {
while (!children.empty()) {
Node *c = children.front()->get();
data.parent->add_child(c);
c->_propagate_replace_owner(NULL, new_owner);
Node *c_node = children.front()->get();
data.parent->add_child(c_node);
c_node->_propagate_replace_owner(NULL, new_owner);
children.pop_front();
}