File tree Expand file tree Collapse file tree 1 file changed +10
-7
lines changed
editor/src/messages/tool/tool_messages Expand file tree Collapse file tree 1 file changed +10
-7
lines changed Original file line number Diff line number Diff 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 Selection box,keeping 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
You can’t perform that action at this time.
0 commit comments