@@ -253,7 +253,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
253253 } ;
254254
255255 let mut added_transaction = false ;
256- for layer in self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_unlocked_layers ( & self . network_interface ) {
256+ for layer in self . network_interface . selected_nodes ( ) . selected_unlocked_layers ( & self . network_interface ) {
257257 let Some ( bbox) = self . metadata ( ) . bounding_box_viewport ( layer) else {
258258 continue ;
259259 } ;
@@ -290,15 +290,15 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
290290 } ) ;
291291 }
292292 DocumentMessage :: CreateEmptyFolder => {
293- let selected_nodes = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
293+ let selected_nodes = self . network_interface . selected_nodes ( ) ;
294294 let id = NodeId :: new ( ) ;
295295
296296 let parent = self
297297 . network_interface
298298 . deepest_common_ancestor ( & selected_nodes, & self . selection_network_path , true )
299299 . unwrap_or ( LayerNodeIdentifier :: ROOT_PARENT ) ;
300300
301- let insert_index = DocumentMessageHandler :: get_calculated_insert_index ( self . metadata ( ) , & self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) , parent) ;
301+ let insert_index = DocumentMessageHandler :: get_calculated_insert_index ( self . metadata ( ) , & self . network_interface . selected_nodes ( ) , parent) ;
302302 responses. add ( DocumentMessage :: AddTransaction ) ;
303303 responses. add ( GraphOperationMessage :: NewCustomLayer {
304304 id,
@@ -440,7 +440,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
440440 let center = ( max + min) / 2. ;
441441 let bbox_trans = DAffine2 :: from_translation ( -center) ;
442442 let mut added_transaction = false ;
443- for layer in self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_unlocked_layers ( & self . network_interface ) {
443+ for layer in self . network_interface . selected_nodes ( ) . selected_unlocked_layers ( & self . network_interface ) {
444444 if !added_transaction {
445445 responses. add ( DocumentMessage :: AddTransaction ) ;
446446 added_transaction = true ;
@@ -463,7 +463,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
463463 let bbox_trans = DAffine2 :: from_translation ( -center) ;
464464
465465 let mut added_transaction = false ;
466- for layer in self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_unlocked_layers ( & self . network_interface ) {
466+ for layer in self . network_interface . selected_nodes ( ) . selected_unlocked_layers ( & self . network_interface ) {
467467 if !added_transaction {
468468 responses. add ( DocumentMessage :: AddTransaction ) ;
469469 added_transaction = true ;
@@ -528,14 +528,14 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
528528 . children ( self . metadata ( ) )
529529 . filter ( |x| self . network_interface . is_artboard ( & x. to_node ( ) , & self . selection_network_path ) )
530530 . collect :: < Vec < _ > > ( ) ;
531- let Some ( selected_nodes) = self . network_interface . selected_nodes ( & [ ] ) else { return } ;
531+ let selected_nodes = self . network_interface . selected_nodes ( ) ;
532532
533533 // Non-artboard (infinite canvas) workflow
534534 if artboards. is_empty ( ) {
535535 let Some ( parent) = self . network_interface . deepest_common_ancestor ( & selected_nodes, & self . selection_network_path , false ) else {
536536 return ;
537537 } ;
538- let Some ( selected_nodes) = & self . network_interface . selected_nodes ( & self . selection_network_path ) else {
538+ let Some ( selected_nodes) = & self . network_interface . selected_nodes_in_nested_network ( & self . selection_network_path ) else {
539539 return ;
540540 } ;
541541 let insert_index = DocumentMessageHandler :: get_calculated_insert_index ( self . metadata ( ) , selected_nodes, parent) ;
@@ -608,8 +608,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
608608 // Disallow trying to insert into self.
609609 if self
610610 . network_interface
611- . selected_nodes ( & [ ] )
612- . unwrap ( )
611+ . selected_nodes ( )
613612 . selected_layers ( self . metadata ( ) )
614613 . any ( |layer| parent. ancestors ( self . metadata ( ) ) . any ( |ancestor| ancestor == layer) )
615614 {
@@ -618,8 +617,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
618617 // Artboards can only have `ROOT_PARENT` as the parent.
619618 let any_artboards = self
620619 . network_interface
621- . selected_nodes ( & [ ] )
622- . unwrap ( )
620+ . selected_nodes ( )
623621 . selected_layers ( self . metadata ( ) )
624622 . any ( |layer| self . network_interface . is_artboard ( & layer. to_node ( ) , & self . selection_network_path ) ) ;
625623 if any_artboards && parent != LayerNodeIdentifier :: ROOT_PARENT {
@@ -629,8 +627,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
629627 // Non-artboards cannot be put at the top level if artboards also exist there
630628 let selected_any_non_artboards = self
631629 . network_interface
632- . selected_nodes ( & [ ] )
633- . unwrap ( )
630+ . selected_nodes ( )
634631 . selected_layers ( self . metadata ( ) )
635632 . any ( |layer| !self . network_interface . is_artboard ( & layer. to_node ( ) , & self . selection_network_path ) ) ;
636633
@@ -719,9 +716,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
719716 let resize_opposite_corner = ipp. keyboard . key ( resize_opposite_corner) ;
720717
721718 let can_move = |layer| {
722- self . network_interface
723- . selected_nodes ( & [ ] )
724- . is_some_and ( |selected| selected. layer_visible ( layer, & self . network_interface ) && !selected. layer_locked ( layer, & self . network_interface ) )
719+ let selected = self . network_interface . selected_nodes ( ) ;
720+ selected. layer_visible ( layer, & self . network_interface ) && !selected. layer_locked ( layer, & self . network_interface )
725721 } ;
726722
727723 // Nudge translation without resizing
@@ -982,7 +978,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
982978 } )
983979 }
984980 DocumentMessage :: SelectParentLayer => {
985- let selected_nodes = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
981+ let selected_nodes = self . network_interface . selected_nodes ( ) ;
986982 let selected_layers = selected_nodes. selected_layers ( self . metadata ( ) ) ;
987983
988984 let mut parent_layers = HashSet :: new ( ) ;
@@ -1009,8 +1005,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
10091005 DocumentMessage :: SelectAllLayers => {
10101006 let metadata = self . metadata ( ) ;
10111007 let all_layers_except_artboards_invisible_and_locked = metadata. all_layers ( ) . filter ( |& layer| !self . network_interface . is_artboard ( & layer. to_node ( ) , & [ ] ) ) . filter ( |& layer| {
1012- self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . layer_visible ( layer, & self . network_interface )
1013- && !self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . layer_locked ( layer, & self . network_interface )
1008+ self . network_interface . selected_nodes ( ) . layer_visible ( layer, & self . network_interface ) && !self . network_interface . selected_nodes ( ) . layer_locked ( layer, & self . network_interface )
10141009 } ) ;
10151010 let nodes = all_layers_except_artboards_invisible_and_locked. map ( |layer| layer. to_node ( ) ) . collect ( ) ;
10161011 responses. add ( NodeGraphMessage :: SelectedNodesSet { nodes } ) ;
@@ -1064,7 +1059,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
10641059 } else {
10651060 if ctrl {
10661061 // Toggle selection when holding ctrl
1067- if self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_layers_contains ( layer, self . metadata ( ) ) {
1062+ if self . network_interface . selected_nodes ( ) . selected_layers_contains ( layer, self . metadata ( ) ) {
10681063 responses. add_front ( NodeGraphMessage :: SelectedNodesRemove { nodes : vec ! [ id] } ) ;
10691064 } else {
10701065 responses. add_front ( NodeGraphMessage :: SelectedNodesAdd { nodes : vec ! [ id] } ) ;
@@ -1106,7 +1101,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
11061101 responses. add ( NodeGraphMessage :: UpdateInSelectedNetwork ) ;
11071102 }
11081103 DocumentMessage :: SetBlendModeForSelectedLayers { blend_mode } => {
1109- for layer in self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_layers_except_artboards ( & self . network_interface ) {
1104+ for layer in self . network_interface . selected_nodes ( ) . selected_layers_except_artboards ( & self . network_interface ) {
11101105 responses. add ( GraphOperationMessage :: BlendModeSet { layer, blend_mode } ) ;
11111106 }
11121107 }
@@ -1123,7 +1118,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
11231118 }
11241119 DocumentMessage :: SetOpacityForSelectedLayers { opacity } => {
11251120 let opacity = opacity. clamp ( 0. , 1. ) ;
1126- for layer in self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_layers_except_artboards ( & self . network_interface ) {
1121+ for layer in self . network_interface . selected_nodes ( ) . selected_layers_except_artboards ( & self . network_interface ) {
11271122 responses. add ( GraphOperationMessage :: OpacitySet { layer, opacity } ) ;
11281123 }
11291124 }
@@ -1233,7 +1228,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
12331228 . into_iter ( )
12341229 . filter ( |( node_id, _) |
12351230 // Ensure that the layer is in the document network to prevent logging an error
1236- self . network_interface . network ( & [ ] ) . unwrap ( ) . nodes . contains_key ( node_id) )
1231+ self . network_interface . document_network ( ) . nodes . contains_key ( node_id) )
12371232 . filter_map ( |( node_id, click_targets) | {
12381233 self . network_interface . is_layer ( & node_id, & [ ] ) . then ( || {
12391234 let layer = LayerNodeIdentifier :: new ( node_id, & self . network_interface , & [ ] ) ;
@@ -1448,7 +1443,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
14481443 ) ;
14491444
14501445 // Additional actions if there are any selected layers
1451- if self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_layers ( self . metadata ( ) ) . next ( ) . is_some ( ) {
1446+ if self . network_interface . selected_nodes ( ) . selected_layers ( self . metadata ( ) ) . next ( ) . is_some ( ) {
14521447 let mut select = actions ! ( DocumentMessageDiscriminant ;
14531448 DeleteSelectedLayers ,
14541449 DuplicateSelectedLayers ,
@@ -1594,24 +1589,22 @@ impl DocumentMessageHandler {
15941589 /// Get the combined bounding box of the click targets of the selected visible layers in viewport space
15951590 pub fn selected_visible_layers_bounding_box_viewport ( & self ) -> Option < [ DVec2 ; 2 ] > {
15961591 self . network_interface
1597- . selected_nodes ( & [ ] )
1598- . unwrap ( )
1592+ . selected_nodes ( )
15991593 . selected_visible_layers ( & self . network_interface )
16001594 . filter_map ( |layer| self . metadata ( ) . bounding_box_viewport ( layer) )
16011595 . reduce ( graphene_core:: renderer:: Quad :: combine_bounds)
16021596 }
16031597
16041598 pub fn selected_visible_and_unlock_layers_bounding_box_viewport ( & self ) -> Option < [ DVec2 ; 2 ] > {
16051599 self . network_interface
1606- . selected_nodes ( & [ ] )
1607- . unwrap ( )
1600+ . selected_nodes ( )
16081601 . selected_visible_and_unlocked_layers ( & self . network_interface )
16091602 . filter_map ( |layer| self . metadata ( ) . bounding_box_viewport ( layer) )
16101603 . reduce ( graphene_core:: renderer:: Quad :: combine_bounds)
16111604 }
16121605
16131606 pub fn document_network ( & self ) -> & NodeNetwork {
1614- self . network_interface . network ( & [ ] ) . unwrap ( )
1607+ self . network_interface . document_network ( )
16151608 }
16161609
16171610 pub fn metadata ( & self ) -> & DocumentMetadata {
@@ -1778,7 +1771,7 @@ impl DocumentMessageHandler {
17781771 }
17791772
17801773 pub fn current_hash ( & self ) -> Option < u64 > {
1781- self . document_undo_history . iter ( ) . last ( ) . map ( |network| network. network ( & [ ] ) . unwrap ( ) . current_hash ( ) )
1774+ self . document_undo_history . iter ( ) . last ( ) . map ( |network| network. document_network ( ) . current_hash ( ) )
17821775 }
17831776
17841777 pub fn is_auto_saved ( & self ) -> bool {
@@ -1827,7 +1820,7 @@ impl DocumentMessageHandler {
18271820
18281821 /// Finds the parent folder which, based on the current selections, should be the container of any newly added layers.
18291822 pub fn new_layer_parent ( & self , include_self : bool ) -> LayerNodeIdentifier {
1830- let Some ( selected_nodes) = self . network_interface . selected_nodes ( & self . selection_network_path ) else {
1823+ let Some ( selected_nodes) = self . network_interface . selected_nodes_in_nested_network ( & self . selection_network_path ) else {
18311824 warn ! ( "No selected nodes found in new_layer_parent. Defaulting to ROOT_PARENT." ) ;
18321825 return LayerNodeIdentifier :: ROOT_PARENT ;
18331826 } ;
@@ -1875,13 +1868,15 @@ impl DocumentMessageHandler {
18751868 } ) ,
18761869 GroupFolderType :: BooleanOperation ( operation) => {
18771870 // Get the ID of the one selected layer, if exactly one is selected
1878- let only_selected_layer = network_interface. selected_nodes ( & [ ] ) . and_then ( |selected_nodes| {
1871+ let only_selected_layer = {
1872+ let selected_nodes = network_interface. selected_nodes ( ) ;
18791873 let mut layers = selected_nodes. selected_layers ( network_interface. document_metadata ( ) ) ;
1874+
18801875 match ( layers. next ( ) , layers. next ( ) ) {
18811876 ( Some ( id) , None ) => Some ( id) ,
18821877 _ => None ,
18831878 }
1884- } ) ;
1879+ } ;
18851880
18861881 // If there is a single selected layer, check if there is a boolean operation upstream from it
18871882 let upstream_boolean_op = only_selected_layer. and_then ( |selected_id| {
@@ -2141,7 +2136,7 @@ impl DocumentMessageHandler {
21412136
21422137 pub fn update_layers_panel_control_bar_widgets ( & self , responses : & mut VecDeque < Message > ) {
21432138 // Get an iterator over the selected layers (excluding artboards which don't have an opacity or blend mode).
2144- let selected_nodes = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
2139+ let selected_nodes = self . network_interface . selected_nodes ( ) ;
21452140 let selected_layers_except_artboards = selected_nodes. selected_layers_except_artboards ( & self . network_interface ) ;
21462141
21472142 // Look up the current opacity and blend mode of the selected layers (if any), and split the iterator into the first tuple and the rest.
@@ -2193,17 +2188,15 @@ impl DocumentMessageHandler {
21932188 } )
21942189 . collect ( ) ;
21952190
2196- let has_selection = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) . selected_layers ( self . metadata ( ) ) . next ( ) . is_some ( ) ;
2191+ let has_selection = self . network_interface . selected_nodes ( ) . selected_layers ( self . metadata ( ) ) . next ( ) . is_some ( ) ;
21972192 let selection_all_visible = self
21982193 . network_interface
2199- . selected_nodes ( & [ ] )
2200- . unwrap ( )
2194+ . selected_nodes ( )
22012195 . selected_layers ( self . metadata ( ) )
22022196 . all ( |layer| self . network_interface . is_visible ( & layer. to_node ( ) , & [ ] ) ) ;
22032197 let selection_all_locked = self
22042198 . network_interface
2205- . selected_nodes ( & [ ] )
2206- . unwrap ( )
2199+ . selected_nodes ( )
22072200 . selected_layers ( self . metadata ( ) )
22082201 . all ( |layer| self . network_interface . is_locked ( & layer. to_node ( ) , & [ ] ) ) ;
22092202
@@ -2284,7 +2277,7 @@ impl DocumentMessageHandler {
22842277 }
22852278
22862279 pub fn selected_layers_reverse ( & mut self , responses : & mut VecDeque < Message > ) {
2287- let selected_layers = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
2280+ let selected_layers = self . network_interface . selected_nodes ( ) ;
22882281 let metadata = self . metadata ( ) ;
22892282 let selected_layer_set = selected_layers. selected_layers ( metadata) . collect :: < HashSet < _ > > ( ) ;
22902283
@@ -2376,7 +2369,7 @@ impl DocumentMessageHandler {
23762369 }
23772370
23782371 pub fn selected_layers_reorder ( & mut self , relative_index_offset : isize , responses : & mut VecDeque < Message > ) {
2379- let selected_nodes = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
2372+ let selected_nodes = self . network_interface . selected_nodes ( ) ;
23802373 let mut selected_layers = selected_nodes. selected_layers ( self . metadata ( ) ) ;
23812374
23822375 let first_or_last_selected_layer = match relative_index_offset. signum ( ) {
@@ -2506,7 +2499,7 @@ impl<'a> ClickXRayIter<'a> {
25062499
25072500 /// Handles the checking of the layer to find if it has been clicked
25082501 fn check_layer ( & mut self , layer : LayerNodeIdentifier ) -> XRayResult {
2509- let selected_layers = self . network_interface . selected_nodes ( & [ ] ) . unwrap ( ) ;
2502+ let selected_layers = self . network_interface . selected_nodes ( ) ;
25102503 // Discard invisible and locked layers
25112504 if !selected_layers. layer_visible ( layer, self . network_interface ) || selected_layers. layer_locked ( layer, self . network_interface ) {
25122505 return XRayResult { clicked : false , use_children : false } ;
0 commit comments