Fix duplicates not all being selected after Ctrl+D (#2324)
Fixed selecting all duplicates on Ctrl+D Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
parent
effadcf6a6
commit
b6cdcba9e8
|
|
@ -866,13 +866,15 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
|
||||||
self.load_document(document, document_id, responses, to_front);
|
self.load_document(document, document_id, responses, to_front);
|
||||||
}
|
}
|
||||||
PortfolioMessage::PasteIntoFolder { clipboard, parent, insert_index } => {
|
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<NodeId>| {
|
||||||
if self.active_document().is_some() {
|
if self.active_document().is_some() {
|
||||||
trace!("Pasting into folder {parent:?} as index: {insert_index}");
|
trace!("Pasting into folder {parent:?} as index: {insert_index}");
|
||||||
let nodes = entry.clone().nodes;
|
let nodes = entry.clone().nodes;
|
||||||
let new_ids: HashMap<_, _> = nodes.iter().map(|(id, _)| (*id, NodeId::new())).collect();
|
let new_ids: HashMap<_, _> = nodes.iter().map(|(id, _)| (*id, NodeId::new())).collect();
|
||||||
let layer = LayerNodeIdentifier::new_unchecked(new_ids[&NodeId(0)]);
|
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 });
|
responses.add(NodeGraphMessage::MoveLayerToStack { layer, parent, insert_index });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -880,9 +882,10 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
|
||||||
responses.add(DocumentMessage::DeselectAllLayers);
|
responses.add(DocumentMessage::DeselectAllLayers);
|
||||||
|
|
||||||
for entry in self.copy_buffer[clipboard as usize].iter().rev() {
|
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::RunDocumentGraph);
|
||||||
|
responses.add(NodeGraphMessage::SelectedNodesSet { nodes: all_new_ids });
|
||||||
}
|
}
|
||||||
PortfolioMessage::PasteSerializedData { data } => {
|
PortfolioMessage::PasteSerializedData { data } => {
|
||||||
if let Some(document) = self.active_document() {
|
if let Some(document) = self.active_document() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue