@@ -333,9 +333,12 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
333
333
let id = generate_uuid ( ) ;
334
334
responses. push_back ( DocumentsMessage :: CopySelectedLayers . into ( ) ) ;
335
335
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
336
338
responses. push_back ( DocumentOperation :: CreateFolder { path : vec ! [ id] } . into ( ) ) ;
337
339
self . layerdata_mut ( & [ id] ) . expanded = true ;
338
340
responses. push_back ( DocumentsMessage :: PasteLayers { path : vec ! [ id] , insert_index : -1 } . into ( ) ) ;
341
+ responses. push_back ( DocumentMessage :: SetSelectedLayers ( vec ! [ vec![ id] ] ) . into ( ) ) ;
339
342
}
340
343
SetBlendModeForSelectedLayers ( blend_mode) => {
341
344
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
355
358
ToggleLayerExpansion ( path) => {
356
359
self . layer_data ( & path) . expanded ^= true ;
357
360
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 ( ) ) ,
360
363
}
364
+ responses. extend ( self . layer_panel_entry ( path. clone ( ) ) . ok ( ) . map ( |data| FrontendMessage :: UpdateLayer { path : path. into ( ) , data } . into ( ) ) ) ;
361
365
}
362
366
SelectionChanged => responses. push_back ( SelectMessage :: UpdateSelectionBoundingBox . into ( ) ) ,
363
367
DeleteSelectedLayers => {
0 commit comments