Skip to content

Commit a6676e4

Browse files
0SlowPoke0Keavon
andauthored
Fix Select tool's box selection not being able to extend a selection with shift (#2157)
* select parent-node,remove deselect all layers message * Comment nits --------- Co-authored-by: Keavon Chambers <[email protected]>
1 parent 77936c4 commit a6676e4

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -665,12 +665,7 @@ impl Fsm for SelectToolFsmState {
665665
responses.add(DocumentMessage::StartTransaction);
666666
SelectToolFsmState::Dragging
667667
} else {
668-
// Deselect all layers if using shallowest selection behavior
669-
// Necessary since for shallowest mode, we need to know the current selected layers to determine the next
670-
if tool_data.nested_selection_behavior == NestedSelectionBehavior::Shallowest {
671-
responses.add(DocumentMessage::DeselectAllLayers);
672-
tool_data.layers_dragging.clear();
673-
}
668+
// Make a box selection, preserving previously selected layers
674669
let selection = tool_data.nested_selection_behavior;
675670
SelectToolFsmState::DrawingBox { selection }
676671
}
@@ -1011,7 +1006,15 @@ impl Fsm for SelectToolFsmState {
10111006
let new_selected: HashSet<_> = document.intersect_quad_no_artboards(quad, input).collect();
10121007
let current_selected: HashSet<_> = document.network_interface.selected_nodes(&[]).unwrap().selected_layers(document.metadata()).collect();
10131008
if new_selected != current_selected {
1014-
tool_data.layers_dragging = new_selected.into_iter().collect();
1009+
let parent_selected: HashSet<_> = new_selected
1010+
.into_iter()
1011+
.map(|layer| {
1012+
// Find the parent node
1013+
layer.ancestors(document.metadata()).filter(not_artboard(document)).last().unwrap_or(layer)
1014+
})
1015+
.collect();
1016+
1017+
tool_data.layers_dragging.extend(parent_selected.iter().copied());
10151018
responses.add(NodeGraphMessage::SelectedNodesSet {
10161019
nodes: tool_data
10171020
.layers_dragging

0 commit comments

Comments
 (0)