From 97fa346e6e4621f610f7c03fc66af941b1a2d71c Mon Sep 17 00:00:00 2001 From: seif hatem Date: Thu, 13 Mar 2025 17:26:26 +0200 Subject: [PATCH 1/2] trying to fix shallow select --- editor/src/messages/tool/tool_messages/select_tool.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/src/messages/tool/tool_messages/select_tool.rs b/editor/src/messages/tool/tool_messages/select_tool.rs index ae0b1c8a35..0f2844d5ac 100644 --- a/editor/src/messages/tool/tool_messages/select_tool.rs +++ b/editor/src/messages/tool/tool_messages/select_tool.rs @@ -1594,7 +1594,7 @@ fn drag_shallowest_manipulation(responses: &mut VecDeque, selected: Vec .filter(not_artboard(document)) .find(|&ancestor| document.network_interface.selected_nodes().selected_layers_contains(ancestor, document.metadata())); - let new_selected = ancestor.unwrap_or_else(|| layer.ancestors(document.metadata()).filter(not_artboard(document)).last().unwrap_or(layer)); + let new_selected = ancestor.unwrap_or_else(|| layer.ancestors(document.metadata()).filter(not_artboard(document)).next().unwrap_or(layer)); tool_data.layers_dragging.retain(|layer| !layer.ancestors(document.metadata()).any(|ancestor| ancestor == new_selected)); tool_data.layers_dragging.push(new_selected); } From a4831207ae94c385b481338dff265077afb13bf0 Mon Sep 17 00:00:00 2001 From: seif hatem Date: Mon, 17 Mar 2025 02:54:55 +0200 Subject: [PATCH 2/2] fixed shallow select --- .../messages/tool/tool_messages/select_tool.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/editor/src/messages/tool/tool_messages/select_tool.rs b/editor/src/messages/tool/tool_messages/select_tool.rs index f259684174..d0cdcdceb5 100644 --- a/editor/src/messages/tool/tool_messages/select_tool.rs +++ b/editor/src/messages/tool/tool_messages/select_tool.rs @@ -1617,16 +1617,14 @@ fn not_artboard(document: &DocumentMessageHandler) -> impl Fn(&LayerNodeIdentifi } fn drag_shallowest_manipulation(responses: &mut VecDeque, selected: Vec, tool_data: &mut SelectToolData, document: &DocumentMessageHandler) { - for layer in selected { - let ancestor = layer - .ancestors(document.metadata()) - .filter(not_artboard(document)) - .find(|&ancestor| document.network_interface.selected_nodes().selected_layers_contains(ancestor, document.metadata())); - - let new_selected = ancestor.unwrap_or_else(|| layer.ancestors(document.metadata()).filter(not_artboard(document)).next().unwrap_or(layer)); - tool_data.layers_dragging.retain(|layer| !layer.ancestors(document.metadata()).any(|ancestor| ancestor == new_selected)); - tool_data.layers_dragging.push(new_selected); - } + tool_data.layers_dragging.append(&mut vec![ + document.find_deepest(&selected).unwrap_or( + LayerNodeIdentifier::ROOT_PARENT + .children(document.metadata()) + .next() + .expect("ROOT_PARENT should have a layer child when clicking"), + ), + ]); responses.add(NodeGraphMessage::SelectedNodesSet { nodes: tool_data