@@ -333,9 +333,12 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
333333 let id = generate_uuid ( ) ;
334334 responses. push_back ( DocumentsMessage :: CopySelectedLayers . into ( ) ) ;
335335 responses. push_back ( DocumentMessage :: DeleteSelectedLayers . into ( ) ) ;
336+ // TODO: add special case handling to create a sub folder if all selected layers
337+ // come from the same folder
336338 responses. push_back ( DocumentOperation :: CreateFolder { path : vec ! [ id] } . into ( ) ) ;
337339 self . layerdata_mut ( & [ id] ) . expanded = true ;
338340 responses. push_back ( DocumentsMessage :: PasteLayers { path : vec ! [ id] , insert_index : -1 } . into ( ) ) ;
341+ responses. push_back ( DocumentMessage :: SetSelectedLayers ( vec ! [ vec![ id] ] ) . into ( ) ) ;
339342 }
340343 SetBlendModeForSelectedLayers ( blend_mode) => {
341344 for path in self . layer_data . iter ( ) . filter_map ( |( path, data) | data. selected . then ( || path. clone ( ) ) ) {
@@ -355,9 +358,10 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
355358 ToggleLayerExpansion ( path) => {
356359 self . layer_data ( & path) . expanded ^= true ;
357360 match self . layer_data ( & path) . expanded {
358- true => responses. extend ( self . handle_folder_changed ( path) ) ,
359- false => responses. push_back ( FrontendMessage :: CollapseFolder { path : path. into ( ) } . into ( ) ) ,
361+ true => responses. extend ( self . handle_folder_changed ( path. clone ( ) ) ) ,
362+ false => responses. push_back ( FrontendMessage :: CollapseFolder { path : path. clone ( ) . into ( ) } . into ( ) ) ,
360363 }
364+ responses. extend ( self . layer_panel_entry ( path. clone ( ) ) . ok ( ) . map ( |data| FrontendMessage :: UpdateLayer { path : path. into ( ) , data } . into ( ) ) ) ;
361365 }
362366 SelectionChanged => responses. push_back ( SelectMessage :: UpdateSelectionBoundingBox . into ( ) ) ,
363367 DeleteSelectedLayers => {
0 commit comments