From c8ea9e05a6b52fc248283fcdc93b14e49f96bab0 Mon Sep 17 00:00:00 2001 From: Haikal <76188139+haikalvidya@users.noreply.github.com> Date: Sun, 10 Mar 2024 00:09:30 +0700 Subject: [PATCH] Fix orphaned child layers left behind when a group is ungrouped or deleted (#1655) * Fix Incomplete Deletion of Children Nodes in delete_layer Function * delete debug message * change variable name on iterator of child_layers --- .../document/node_graph/graph_operation_message_handler.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs index 137e9c2c..67b6f6f8 100644 --- a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs @@ -516,7 +516,9 @@ impl<'a> ModifyInputsContext<'a> { return; }; - LayerNodeIdentifier::new(id, self.document_network).delete(self.document_metadata); + let layer_node = LayerNodeIdentifier::new(id, self.document_network); + let child_layers = layer_node.decendants(self.document_metadata).map(|layer| layer.to_node()).collect::>(); + layer_node.delete(self.document_metadata); let new_input = node.inputs[1].clone(); let deleted_position = node.metadata.position; @@ -536,7 +538,7 @@ impl<'a> ModifyInputsContext<'a> { } let mut delete_nodes = vec![id]; - for (_node, id) in self.document_network.upstream_flow_back_from_nodes(vec![id], true) { + for (_node, id) in self.document_network.upstream_flow_back_from_nodes([vec![id], child_layers].concat(), true) { // Don't delete the node if other layers depend on it. if self.outwards_links.get(&id).is_some_and(|nodes| nodes.len() > 1) { break;