Skip to content

Commit 437c835

Browse files
committed
Fixes
1 parent 4ede703 commit 437c835

File tree

1 file changed

+9
-18
lines changed

1 file changed

+9
-18
lines changed

editor/src/messages/tool/tool_messages/select_tool.rs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,7 +1606,7 @@ fn drag_shallowest_manipulation(responses: &mut VecDeque<Message>, selected: Vec
16061606
let selected_layers = document.network_interface.selected_nodes().selected_layers(document.metadata()).collect::<Vec<_>>();
16071607
let metadata = document.metadata();
16081608

1609-
let final_selection: Option<Vec<LayerNodeIdentifier>> = (!selected_layers.is_empty() && selected_layers != vec![LayerNodeIdentifier::ROOT_PARENT]).then_some(()).and_then(|_| {
1609+
let final_selection: Option<LayerNodeIdentifier> = (!selected_layers.is_empty() && selected_layers != vec![LayerNodeIdentifier::ROOT_PARENT]).then_some(()).and_then(|_| {
16101610
let mut relevant_layers = selected_layers;
16111611
if !relevant_layers.contains(&clicked_layer) {
16121612
relevant_layers.push(clicked_layer);
@@ -1619,29 +1619,20 @@ fn drag_shallowest_manipulation(responses: &mut VecDeque<Message>, selected: Vec
16191619
.iter()
16201620
.all(|layer| *layer == potential_lca || layer.ancestors(metadata).any(|ancestor| ancestor == potential_lca))
16211621
})
1622-
.map(|lca| {
1622+
.and_then(|lca| {
16231623
let direct_children_of_lca: Vec<_> = lca.children(metadata).collect();
1624-
let mut relevant_siblings = HashSet::new();
1625-
for layer_to_check in &relevant_layers {
1626-
if *layer_to_check == lca {
1627-
relevant_siblings.clear();
1628-
relevant_siblings.insert(lca);
1629-
break;
1630-
}
1631-
if let Some(relevant_child) = direct_children_of_lca
1624+
if clicked_layer == lca {
1625+
Some(lca)
1626+
} else {
1627+
direct_children_of_lca
16321628
.iter()
1633-
.find(|&&child| *layer_to_check == child || layer_to_check.ancestors(metadata).any(|ancestor| ancestor == child))
1634-
{
1635-
relevant_siblings.insert(*relevant_child);
1636-
}
1629+
.find(|&&child| clicked_layer == child || clicked_layer.ancestors(metadata).any(|ancestor| ancestor == child)).copied()
16371630
}
1638-
relevant_siblings.into_iter().collect()
16391631
})
16401632
});
16411633

1642-
let new_selected = final_selection.unwrap_or_else(|| vec![clicked_layer.ancestors(document.metadata()).filter(not_artboard(document)).last().unwrap_or(clicked_layer)]);
1643-
tool_data.layers_dragging.clear();
1644-
tool_data.layers_dragging.extend(new_selected);
1634+
let new_selected = final_selection.unwrap_or_else(|| clicked_layer.ancestors(document.metadata()).filter(not_artboard(document)).last().unwrap_or(clicked_layer));
1635+
tool_data.layers_dragging.extend(vec![new_selected]);
16451636

16461637
responses.add(NodeGraphMessage::SelectedNodesSet {
16471638
nodes: tool_data

0 commit comments

Comments
 (0)