@@ -111,7 +111,7 @@ impl DocumentMessageHandler {
111111 self . active_document ( ) . layer_data . get ( path) . expect ( "Layerdata does not exist" )
112112 }
113113 fn layerdata_mut ( & mut self , path : & [ LayerId ] ) -> & mut LayerData {
114- self . active_document_mut ( ) . layer_data . entry ( path. to_vec ( ) ) . or_insert ( LayerData :: new ( true ) )
114+ self . active_document_mut ( ) . layer_data . entry ( path. to_vec ( ) ) . or_insert_with ( || LayerData :: new ( true ) )
115115 }
116116 #[ allow( dead_code) ]
117117 fn create_transform_from_layerdata ( & self , path : Vec < u64 > , responses : & mut VecDeque < Message > ) {
@@ -126,7 +126,7 @@ impl DocumentMessageHandler {
126126 }
127127 fn create_document_transform_from_layerdata ( & self , viewport_size : & ViewportPosition , responses : & mut VecDeque < Message > ) {
128128 let half_viewport = viewport_size. to_dvec2 ( ) / 2. ;
129- let layerdata = self . layerdata ( & vec ! [ ] ) ;
129+ let layerdata = self . layerdata ( & [ ] ) ;
130130 let scaled_half_viewport = half_viewport / layerdata. scale ;
131131 responses. push_back (
132132 DocumentOperation :: SetLayerTransform {
@@ -145,7 +145,7 @@ impl DocumentMessageHandler {
145145 . layer_data
146146 . iter ( )
147147 // 'path.len() > 0' filters out root layer since it has no indices
148- . filter_map ( |( path, data) | ( path. len ( ) > 0 && !only_selected || data. selected ) . then ( || path. clone ( ) ) )
148+ . filter_map ( |( path, data) | ( ! path. is_empty ( ) && !only_selected || data. selected ) . then ( || path. clone ( ) ) )
149149 . filter_map ( |path| {
150150 // Currently it is possible that layer_data contains layers that are don't actually exist
151151 // and thus indices_for_path can return an error. We currently skip these layers and log a warning.
@@ -161,7 +161,7 @@ impl DocumentMessageHandler {
161161 . collect ( ) ;
162162
163163 layers_with_indices. sort_by_key ( |( _, indices) | indices. clone ( ) ) ;
164- return layers_with_indices. into_iter ( ) . map ( |( path, _) | path) . collect ( ) ;
164+ layers_with_indices. into_iter ( ) . map ( |( path, _) | path) . collect ( )
165165 }
166166
167167 /// Returns the paths to all layers in order
@@ -286,7 +286,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
286286 }
287287 } )
288288 . collect :: < Vec < usize > > ( ) ;
289- doc_title_numbers. sort ( ) ;
289+ doc_title_numbers. sort_unstable ( ) ;
290290 let mut new_doc_title_num = 1 ;
291291 while new_doc_title_num <= self . documents . len ( ) {
292292 if new_doc_title_num != doc_title_numbers[ new_doc_title_num - 1 ] {
@@ -442,7 +442,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
442442 RotateCanvasBegin { snap } => {
443443 self . rotating = true ;
444444 self . snapping = snap;
445- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
445+ let layerdata = self . layerdata_mut ( & [ ] ) ;
446446 layerdata. snap_rotate = snap;
447447 self . mouse_pos = ipp. mouse . position ;
448448 }
@@ -453,7 +453,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
453453 self . mouse_pos = ipp. mouse . position ;
454454 }
455455 TranslateCanvasEnd => {
456- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
456+ let layerdata = self . layerdata_mut ( & [ ] ) ;
457457 layerdata. rotation = layerdata. snapped_angle ( ) ;
458458 layerdata. snap_rotate = false ;
459459 self . translating = false ;
@@ -465,7 +465,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
465465 let delta = ipp. mouse . position . to_dvec2 ( ) - self . mouse_pos . to_dvec2 ( ) ;
466466 let transformed_delta = self . active_document ( ) . document . root . transform . inverse ( ) . transform_vector2 ( delta) ;
467467
468- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
468+ let layerdata = self . layerdata_mut ( & [ ] ) ;
469469 layerdata. translation = layerdata. translation + transformed_delta;
470470 self . create_document_transform_from_layerdata ( & ipp. viewport_size , responses) ;
471471 }
@@ -478,7 +478,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
478478 } ;
479479
480480 let snapping = self . snapping ;
481- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
481+ let layerdata = self . layerdata_mut ( & [ ] ) ;
482482 layerdata. rotation += rotation;
483483 layerdata. snap_rotate = snapping;
484484 responses. push_back (
@@ -492,7 +492,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
492492 if self . zooming {
493493 let difference = self . mouse_pos . y as f64 - ipp. mouse . position . y as f64 ;
494494 let amount = 1. + difference * MOUSE_ZOOM_RATE ;
495- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
495+ let layerdata = self . layerdata_mut ( & [ ] ) ;
496496 let new = ( layerdata. scale * amount) . clamp ( VIEWPORT_ZOOM_SCALE_MIN , VIEWPORT_ZOOM_SCALE_MAX ) ;
497497 layerdata. scale = new;
498498 responses. push_back ( FrontendMessage :: SetCanvasZoom { new_zoom : layerdata. scale } . into ( ) ) ;
@@ -501,13 +501,13 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
501501 self . mouse_pos = ipp. mouse . position ;
502502 }
503503 SetCanvasZoom ( new) => {
504- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
504+ let layerdata = self . layerdata_mut ( & [ ] ) ;
505505 layerdata. scale = new. clamp ( VIEWPORT_ZOOM_SCALE_MIN , VIEWPORT_ZOOM_SCALE_MAX ) ;
506506 responses. push_back ( FrontendMessage :: SetCanvasZoom { new_zoom : layerdata. scale } . into ( ) ) ;
507507 self . create_document_transform_from_layerdata ( & ipp. viewport_size , responses) ;
508508 }
509509 MultiplyCanvasZoom ( multiplier) => {
510- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
510+ let layerdata = self . layerdata_mut ( & [ ] ) ;
511511 let new = ( layerdata. scale * multiplier) . clamp ( VIEWPORT_ZOOM_SCALE_MIN , VIEWPORT_ZOOM_SCALE_MAX ) ;
512512 layerdata. scale = new;
513513 responses. push_back ( FrontendMessage :: SetCanvasZoom { new_zoom : layerdata. scale } . into ( ) ) ;
@@ -527,7 +527,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
527527 let delta = delta_size * -2. * ( mouse_percent - ( 0.5 , 0.5 ) . into ( ) ) ;
528528
529529 let transformed_delta = self . active_document ( ) . document . root . transform . inverse ( ) . transform_vector2 ( delta) ;
530- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
530+ let layerdata = self . layerdata_mut ( & [ ] ) ;
531531 let new = ( layerdata. scale * zoom_factor) . clamp ( VIEWPORT_ZOOM_SCALE_MIN , VIEWPORT_ZOOM_SCALE_MAX ) ;
532532 layerdata. scale = new;
533533 layerdata. translation += transformed_delta;
@@ -540,12 +540,12 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
540540 true => ( -ipp. mouse . scroll_delta . y as f64 , 0. ) . into ( ) ,
541541 } * VIEWPORT_SCROLL_RATE ;
542542 let transformed_delta = self . active_document ( ) . document . root . transform . inverse ( ) . transform_vector2 ( delta) ;
543- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
543+ let layerdata = self . layerdata_mut ( & [ ] ) ;
544544 layerdata. translation += transformed_delta;
545545 self . create_document_transform_from_layerdata ( & ipp. viewport_size , responses) ;
546546 }
547547 SetCanvasRotation ( new) => {
548- let layerdata = self . layerdata_mut ( & vec ! [ ] ) ;
548+ let layerdata = self . layerdata_mut ( & [ ] ) ;
549549 layerdata. rotation = new;
550550 self . create_document_transform_from_layerdata ( & ipp. viewport_size , responses) ;
551551 responses. push_back ( FrontendMessage :: SetCanvasRotation { new_radians : new } . into ( ) ) ;
@@ -554,7 +554,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
554554 let paths: Vec < Vec < LayerId > > = self . get_selected_layers_sorted ( ) ;
555555
556556 let delta = {
557- let root_layer_rotation = self . layerdata_mut ( & vec ! [ ] ) . rotation ;
557+ let root_layer_rotation = self . layerdata_mut ( & [ ] ) . rotation ;
558558 let rotate_to_viewport_space = DAffine2 :: from_angle ( root_layer_rotation) . inverse ( ) ;
559559 rotate_to_viewport_space. transform_point2 ( ( x, y) . into ( ) )
560560 } ;
@@ -567,7 +567,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
567567 }
568568 }
569569 ReorderSelectedLayer ( delta) => {
570- let paths: Vec < Vec < LayerId > > = self . get_selected_layers_sorted ( ) ;
570+ let mut paths: Vec < Vec < LayerId > > = self . get_selected_layers_sorted ( ) ;
571571 // TODO: Support moving more than one layer
572572 if paths. len ( ) == 1 {
573573 let all_layer_paths = self . get_all_layers_sorted ( ) ;
@@ -586,7 +586,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
586586
587587 if next_layer_index != -1 && next_layer_index != selected_layer_index {
588588 let operation = DocumentOperation :: ReorderLayers {
589- source_path : paths[ 0 ] . clone ( ) ,
589+ source_path : paths. drain ( 1 .. 1 ) . next ( ) . unwrap ( ) ,
590590 target_path : all_layer_paths[ next_layer_index as usize ] . to_vec ( ) ,
591591 } ;
592592 responses. push_back ( operation. into ( ) ) ;
0 commit comments