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
This commit is contained in:
Haikal 2024-03-10 00:09:30 +07:00 committed by GitHub
parent b31e8f7b6d
commit c8ea9e05a6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 2 deletions

View File

@ -516,7 +516,9 @@ impl<'a> ModifyInputsContext<'a> {
return; 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::<Vec<_>>();
layer_node.delete(self.document_metadata);
let new_input = node.inputs[1].clone(); let new_input = node.inputs[1].clone();
let deleted_position = node.metadata.position; let deleted_position = node.metadata.position;
@ -536,7 +538,7 @@ impl<'a> ModifyInputsContext<'a> {
} }
let mut delete_nodes = vec![id]; 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. // Don't delete the node if other layers depend on it.
if self.outwards_links.get(&id).is_some_and(|nodes| nodes.len() > 1) { if self.outwards_links.get(&id).is_some_and(|nodes| nodes.len() > 1) {
break; break;