From b6cdcba9e8fbb8dc4cc77bcf12f3d7b2304a3d54 Mon Sep 17 00:00:00 2001 From: Adesh Gupta <148623820+4adex@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:59:26 +0530 Subject: [PATCH] Fix duplicates not all being selected after Ctrl+D (#2324) Fixed selecting all duplicates on Ctrl+D Co-authored-by: Keavon Chambers --- .../src/messages/portfolio/portfolio_message_handler.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index 6afd3683..2e87897f 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -866,13 +866,15 @@ impl MessageHandler> for PortfolioMes self.load_document(document, document_id, responses, to_front); } PortfolioMessage::PasteIntoFolder { clipboard, parent, insert_index } => { - let paste = |entry: &CopyBufferEntry, responses: &mut VecDeque<_>| { + let mut all_new_ids = Vec::new(); + let paste = |entry: &CopyBufferEntry, responses: &mut VecDeque<_>, all_new_ids: &mut Vec| { if self.active_document().is_some() { trace!("Pasting into folder {parent:?} as index: {insert_index}"); let nodes = entry.clone().nodes; let new_ids: HashMap<_, _> = nodes.iter().map(|(id, _)| (*id, NodeId::new())).collect(); let layer = LayerNodeIdentifier::new_unchecked(new_ids[&NodeId(0)]); - responses.add(NodeGraphMessage::AddNodes { nodes, new_ids }); + all_new_ids.extend(new_ids.values().cloned()); + responses.add(NodeGraphMessage::AddNodes { nodes, new_ids: new_ids.clone() }); responses.add(NodeGraphMessage::MoveLayerToStack { layer, parent, insert_index }); } }; @@ -880,9 +882,10 @@ impl MessageHandler> for PortfolioMes responses.add(DocumentMessage::DeselectAllLayers); for entry in self.copy_buffer[clipboard as usize].iter().rev() { - paste(entry, responses) + paste(entry, responses, &mut all_new_ids) } responses.add(NodeGraphMessage::RunDocumentGraph); + responses.add(NodeGraphMessage::SelectedNodesSet { nodes: all_new_ids }); } PortfolioMessage::PasteSerializedData { data } => { if let Some(document) = self.active_document() {