Fix inability to deselect nodes, and nodes not being selected when pasted (#2691)

* Deselect on shift/alt click and paste selects multiple mode

* Grid values persistance

* reset

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
mTvare 2025-06-09 05:11:04 +05:30 committed by Keavon Chambers
parent 878f5d3bf7
commit a1d85779ba
1 changed files with 9 additions and 5 deletions

View File

@ -566,10 +566,12 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphHandlerData<'a>> for NodeGrap
responses.add(DocumentMessage::AddTransaction); responses.add(DocumentMessage::AddTransaction);
let new_ids: HashMap<_, _> = data.iter().map(|(id, _)| (*id, NodeId::new())).collect(); let new_ids: HashMap<_, _> = data.iter().map(|(id, _)| (*id, NodeId::new())).collect();
let nodes: Vec<_> = new_ids.iter().map(|(_, id)| *id).collect();
responses.add(NodeGraphMessage::AddNodes { responses.add(NodeGraphMessage::AddNodes {
nodes: data, nodes: data,
new_ids: new_ids.clone(), new_ids: new_ids.clone(),
}); });
responses.add(NodeGraphMessage::SelectedNodesSet { nodes })
} }
NodeGraphMessage::PointerDown { NodeGraphMessage::PointerDown {
shift_click, shift_click,
@ -995,11 +997,13 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphHandlerData<'a>> for NodeGrap
responses.add(NodeGraphMessage::TogglePreview { node_id: preview_node }); responses.add(NodeGraphMessage::TogglePreview { node_id: preview_node });
self.preview_on_mouse_up = None; self.preview_on_mouse_up = None;
} }
if let Some(node_to_deselect) = self.deselect_on_pointer_up { if let Some(node_to_deselect) = self.deselect_on_pointer_up.take() {
let mut new_selected_nodes = selected_nodes.selected_nodes_ref().clone(); if !self.drag_start.as_ref().is_some_and(|t| t.1) {
new_selected_nodes.remove(node_to_deselect); let mut new_selected_nodes = selected_nodes.selected_nodes_ref().clone();
responses.add(NodeGraphMessage::SelectedNodesSet { nodes: new_selected_nodes }); new_selected_nodes.remove(node_to_deselect);
self.deselect_on_pointer_up = None; responses.add(NodeGraphMessage::SelectedNodesSet { nodes: new_selected_nodes });
return;
}
} }
let point = network_metadata let point = network_metadata
.persistent_metadata .persistent_metadata