diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs index 1c4c4267be..e53956dd65 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs @@ -566,10 +566,12 @@ impl<'a> MessageHandler> for NodeGrap responses.add(DocumentMessage::AddTransaction); 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 { nodes: data, new_ids: new_ids.clone(), }); + responses.add(NodeGraphMessage::SelectedNodesSet { nodes }) } NodeGraphMessage::PointerDown { shift_click, @@ -995,11 +997,13 @@ impl<'a> MessageHandler> for NodeGrap responses.add(NodeGraphMessage::TogglePreview { node_id: preview_node }); self.preview_on_mouse_up = None; } - if let Some(node_to_deselect) = self.deselect_on_pointer_up { - let mut new_selected_nodes = selected_nodes.selected_nodes_ref().clone(); - new_selected_nodes.remove(node_to_deselect); - responses.add(NodeGraphMessage::SelectedNodesSet { nodes: new_selected_nodes }); - self.deselect_on_pointer_up = None; + if let Some(node_to_deselect) = self.deselect_on_pointer_up.take() { + if !self.drag_start.as_ref().is_some_and(|t| t.1) { + let mut new_selected_nodes = selected_nodes.selected_nodes_ref().clone(); + new_selected_nodes.remove(node_to_deselect); + responses.add(NodeGraphMessage::SelectedNodesSet { nodes: new_selected_nodes }); + return; + } } let point = network_metadata .persistent_metadata