@@ -617,22 +617,19 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
617617 let max = all_layer_paths. len ( ) as i64 - 1 ;
618618 let insert_pos = ( pos as i64 + relative_positon as i64 ) . clamp ( 0 , max) as usize ;
619619 let insert = all_layer_paths. get ( insert_pos) ;
620- let position_change = ( insert_pos) as i32 - pos as i32 ;
621- if position_change != 0 {
622- if let Some ( insert_path) = insert {
623- let ( id, path) = insert_path. split_last ( ) . expect ( "Can't move the root folder" ) ;
624- if let Some ( folder) = self . active_document ( ) . document . document_layer ( path) . ok ( ) . map ( |layer| layer. as_folder ( ) . ok ( ) ) . flatten ( ) {
625- let selected: Vec < _ > = selected_layers
626- . iter ( )
627- . filter ( |layer| layer. starts_with ( path) && layer. len ( ) == path. len ( ) + 1 )
628- . map ( |x| x. last ( ) . unwrap ( ) )
629- . collect ( ) ;
630- let non_selected: Vec < _ > = folder. layer_ids . iter ( ) . filter ( |id| selected. iter ( ) . all ( |x| x != id) ) . collect ( ) ;
631- let offset = if relative_positon < 0 || non_selected. is_empty ( ) { 0 } else { 1 } ;
632- let fallback = offset * ( non_selected. len ( ) ) ;
633- let insert_index = non_selected. iter ( ) . position ( |x| * x == id) . map ( |x| x + offset) . unwrap_or ( fallback) as isize ;
634- responses. push_back ( DocumentMessage :: MoveSelectedLayersTo { path : path. to_vec ( ) , insert_index } . into ( ) )
635- }
620+ if let Some ( insert_path) = insert {
621+ let ( id, path) = insert_path. split_last ( ) . expect ( "Can't move the root folder" ) ;
622+ if let Some ( folder) = self . active_document ( ) . document . document_layer ( path) . ok ( ) . map ( |layer| layer. as_folder ( ) . ok ( ) ) . flatten ( ) {
623+ let selected: Vec < _ > = selected_layers
624+ . iter ( )
625+ . filter ( |layer| layer. starts_with ( path) && layer. len ( ) == path. len ( ) + 1 )
626+ . map ( |x| x. last ( ) . unwrap ( ) )
627+ . collect ( ) ;
628+ let non_selected: Vec < _ > = folder. layer_ids . iter ( ) . filter ( |id| selected. iter ( ) . all ( |x| x != id) ) . collect ( ) ;
629+ let offset = if relative_positon < 0 || non_selected. is_empty ( ) { 0 } else { 1 } ;
630+ let fallback = offset * ( non_selected. len ( ) ) ;
631+ let insert_index = non_selected. iter ( ) . position ( |x| * x == id) . map ( |x| x + offset) . unwrap_or ( fallback) as isize ;
632+ responses. push_back ( DocumentMessage :: MoveSelectedLayersTo { path : path. to_vec ( ) , insert_index } . into ( ) )
636633 }
637634 }
638635 }
0 commit comments