diff options
author | Samuele Panzeri <samuele.panzeri@gmail.com> | 2023-04-06 20:47:57 +0200 |
---|---|---|
committer | Samuele Panzeri <samuele.panzeri@gmail.com> | 2023-04-06 20:47:57 +0200 |
commit | 404f24b5c417909bb30a2b8d06d17dab19bd450c (patch) | |
tree | 59fae1c03c5dfd6867e891503ff1d22652ea5ad5 /scene/main/node.cpp | |
parent | 92b7a9603aa2395be6bf361067096538ba393c45 (diff) | |
download | redot-engine-404f24b5c417909bb30a2b8d06d17dab19bd450c.tar.gz |
Update sibling indices after a node is removed.
With change 104392e the code to update node indices on removal was erronously removed.
The out of date indices would cause crashes while selecting nodes in a graph editor (e.g. animation tree) and selected nodes are oftern pushed to beginning or end of the child list for the parent.
Diffstat (limited to 'scene/main/node.cpp')
-rw-r--r-- | scene/main/node.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp index d8375dbc9f..352c8eb77f 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1215,6 +1215,10 @@ void Node::remove_child(Node *p_child) { child_count = data.children.size(); children = data.children.ptrw(); + for (int i = idx; i < child_count; i++) { + children[i]->data.index = i; + } + notification(NOTIFICATION_CHILD_ORDER_CHANGED); emit_signal(SNAME("child_order_changed")); |