@@ -608,22 +608,19 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
608608 let max = all_layer_paths. len ( ) as i64 - 1 ;
609609 let insert_pos = ( pos as i64 + relative_positon as i64 ) . clamp ( 0 , max) as usize ;
610610 let insert = all_layer_paths. get ( insert_pos) ;
611- let position_change = ( insert_pos) as i32 - pos as i32 ;
612- if position_change != 0 {
613- if let Some ( insert_path) = insert {
614- let ( id, path) = insert_path. split_last ( ) . expect ( "Can't move the root folder" ) ;
615- if let Some ( folder) = self . active_document ( ) . document . document_layer ( path) . ok ( ) . map ( |layer| layer. as_folder ( ) . ok ( ) ) . flatten ( ) {
616- let selected: Vec < _ > = selected_layers
617- . iter ( )
618- . filter ( |layer| layer. starts_with ( path) && layer. len ( ) == path. len ( ) + 1 )
619- . map ( |x| x. last ( ) . unwrap ( ) )
620- . collect ( ) ;
621- let non_selected: Vec < _ > = folder. layer_ids . iter ( ) . filter ( |id| selected. iter ( ) . all ( |x| x != id) ) . collect ( ) ;
622- let offset = if relative_positon < 0 || non_selected. is_empty ( ) { 0 } else { 1 } ;
623- let fallback = offset * ( non_selected. len ( ) ) ;
624- let insert_index = non_selected. iter ( ) . position ( |x| * x == id) . map ( |x| x + offset) . unwrap_or ( fallback) as isize ;
625- responses. push_back ( DocumentMessage :: MoveSelectedLayersTo { path : path. to_vec ( ) , insert_index } . into ( ) )
626- }
611+ if let Some ( insert_path) = insert {
612+ let ( id, path) = insert_path. split_last ( ) . expect ( "Can't move the root folder" ) ;
613+ if let Some ( folder) = self . active_document ( ) . document . document_layer ( path) . ok ( ) . map ( |layer| layer. as_folder ( ) . ok ( ) ) . flatten ( ) {
614+ let selected: Vec < _ > = selected_layers
615+ . iter ( )
616+ . filter ( |layer| layer. starts_with ( path) && layer. len ( ) == path. len ( ) + 1 )
617+ . map ( |x| x. last ( ) . unwrap ( ) )
618+ . collect ( ) ;
619+ let non_selected: Vec < _ > = folder. layer_ids . iter ( ) . filter ( |id| selected. iter ( ) . all ( |x| x != id) ) . collect ( ) ;
620+ let offset = if relative_positon < 0 || non_selected. is_empty ( ) { 0 } else { 1 } ;
621+ let fallback = offset * ( non_selected. len ( ) ) ;
622+ let insert_index = non_selected. iter ( ) . position ( |x| * x == id) . map ( |x| x + offset) . unwrap_or ( fallback) as isize ;
623+ responses. push_back ( DocumentMessage :: MoveSelectedLayersTo { path : path. to_vec ( ) , insert_index } . into ( ) )
627624 }
628625 }
629626 }
0 commit comments