From 9a39ff763ace12fd615eaa7449e780fd5d06fa2f Mon Sep 17 00:00:00 2001 From: afrdbaig7 Date: Sun, 18 Jan 2026 15:53:21 +0530 Subject: [PATCH] fix: ensure shared upstream nodes are duplicated only once when duplicating layers --- .../document/utility_types/network_interface.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/editor/src/messages/portfolio/document/utility_types/network_interface.rs b/editor/src/messages/portfolio/document/utility_types/network_interface.rs index 351e632786..e51b5016d4 100644 --- a/editor/src/messages/portfolio/document/utility_types/network_interface.rs +++ b/editor/src/messages/portfolio/document/utility_types/network_interface.rs @@ -2690,15 +2690,20 @@ impl NodeNetworkInterface { return Vec::new(); }; let mut all_selected_nodes = selected_nodes.selected_nodes().cloned().collect::>(); + let mut seen = all_selected_nodes.iter().cloned().collect::>(); + for selected_node_id in selected_nodes.selected_nodes() { if self.is_layer(selected_node_id, network_path) { - let unique_upstream_chain = self + let upstream_chain = self .upstream_flow_back_from_nodes(vec![*selected_node_id], network_path, FlowType::HorizontalFlow) .skip(1) - .take_while(|node_id| self.is_chain(node_id, network_path)) - .filter(|upstream_node| all_selected_nodes.iter().all(|new_selected_node| new_selected_node != upstream_node)) - .collect::>(); - all_selected_nodes.extend(unique_upstream_chain); + .take_while(|node_id| self.is_chain(node_id, network_path)); + + for upstream_node in upstream_chain { + if seen.insert(upstream_node) { + all_selected_nodes.push(upstream_node); + } + } } } all_selected_nodes