Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-01-08 18:30:44 +0300
committerJacques Lucke <jacques@blender.org>2021-01-08 18:39:42 +0300
commitbc788929aa2bd259670a5562a1f403f25cad4625 (patch)
treee8aa0b6746a5bffa2c97b8cb42a817659b20fff9 /source/blender/blenkernel/intern/scene.c
parent2d3f96cace6d63dbf15544dbe8a9a4fa912f6d6d (diff)
Scenes: forbid deleting last local scene
Previously, it was only forbidden to delete the last scene. This can lead to the situation where a .blend file only contains linked scenes. This is problematic, because linked data might not always be available or can be removed from a .blend file without having an additional check for remaining scenes. Now there always has to be at least one local scene. Reviewers: mont29 Differential Revision: https://developer.blender.org/D10049
Diffstat (limited to 'source/blender/blenkernel/intern/scene.c')
-rw-r--r--source/blender/blenkernel/intern/scene.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index adc50c2247b..11cdf67cb82 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -2032,6 +2032,21 @@ void BKE_scene_groups_relink(Scene *sce)
}
}
+bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene)
+{
+ /* Linked scenes can always be removed. */
+ if (ID_IS_LINKED(scene)) {
+ return true;
+ }
+ /* Local scenes can only be removed, when there is at least one local scene left. */
+ LISTBASE_FOREACH (Scene *, other_scene, &bmain->scenes) {
+ if (other_scene != scene && !ID_IS_LINKED(other_scene)) {
+ return true;
+ }
+ }
+ return false;
+}
+
Scene *BKE_scene_add(Main *bmain, const char *name)
{
Scene *sce;