Skip to content

Commit

Permalink
Fix SceneTreeDock invalid state after trying to remove internal Node
Browse files Browse the repository at this point in the history
  • Loading branch information
kleonc committed Aug 28, 2024
1 parent e439154 commit 5ae85a4
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions editor/scene_tree_dock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2650,6 +2650,13 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
}
}

if (!entire_scene) {
for (const Node *E : remove_list) {
// `move_child` + `get_index` doesn't really work for internal nodes.
ERR_FAIL_COND_MSG(E->get_internal_mode() != INTERNAL_MODE_DISABLED, "Trying to remove internal node, this is not supported.");
}
}

EditorNode::get_singleton()->hide_unused_editors(this);

EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton();
Expand All @@ -2662,10 +2669,6 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
undo_redo->add_undo_method(scene_tree, "update_tree");
undo_redo->add_undo_reference(edited_scene);
} else {
for (const Node *E : remove_list) {
// `move_child` + `get_index` doesn't really work for internal nodes.
ERR_FAIL_COND_MSG(E->get_internal_mode() != INTERNAL_MODE_DISABLED, "Trying to remove internal node, this is not supported.");
}
if (delete_tracks_checkbox->is_pressed() || p_cut) {
remove_list.sort_custom<Node::Comparator>(); // Sort nodes to keep positions.
HashMap<Node *, NodePath> path_renames;
Expand Down

0 comments on commit 5ae85a4

Please sign in to comment.