diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/layer.c | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h index 52503f08153..b903545bd3b 100644 --- a/source/blender/blenkernel/BKE_layer.h +++ b/source/blender/blenkernel/BKE_layer.h @@ -99,6 +99,7 @@ void BKE_main_collection_sync(const struct Main *bmain); void BKE_scene_collection_sync(const struct Scene *scene); void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer); void BKE_layer_collection_local_sync(struct ViewLayer *view_layer, const struct View3D *v3d); +void BKE_layer_collection_local_sync_all(struct Main *bmain); void BKE_main_collection_sync_remap(const struct Main *bmain); diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c index 4da59ff302d..2f1ad2559f9 100644 --- a/source/blender/blenkernel/intern/layer.c +++ b/source/blender/blenkernel/intern/layer.c @@ -931,6 +931,8 @@ void BKE_main_collection_sync(const Main *bmain) for (const Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { BKE_scene_collection_sync(scene); } + + BKE_layer_collection_local_sync_all(bmain); } void BKE_main_collection_sync_remap(const Main *bmain) @@ -1246,6 +1248,28 @@ void BKE_layer_collection_local_sync(ViewLayer *view_layer, const View3D *v3d) } /** + * Sync the local collection for all the viewports. + */ +void BKE_layer_collection_local_sync_all(Main *bmain) +{ + LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { + LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { + LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) { + LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { + if (area->spacetype != SPACE_VIEW3D) { + continue; + } + View3D *v3d = area->spacedata.first; + if (v3d->flag & V3D_LOCAL_COLLECTIONS) { + BKE_layer_collection_local_sync(view_layer, v3d); + } + } + } + } + } +} + +/** * Isolate the collection locally * * Same as BKE_layer_collection_isolate_local but for a viewport |