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:
authorBastien Montagne <bastien@blender.org>2021-04-07 16:50:53 +0300
committerBastien Montagne <bastien@blender.org>2021-04-08 12:31:24 +0300
commit8b68a75872372197d8b38c516f054d07f0b7ad30 (patch)
tree6d9d94078e68293ed84947b12e673127ee724cb0 /source/blender/blenkernel/intern/lib_override.c
parentde6f19ce2256a8a6a8529297feb499b423163c9e (diff)
LibOverride: Add a new 'leftover' flag to ID.
This flag is set for liboverride IDs that are detected as no longer needed by resync process, while having been user-edited, so auto-handling code cannot silently delete them. Exposing those to users will be part of the new incoming Override Outliner view. Part of D10855.
Diffstat (limited to 'source/blender/blenkernel/intern/lib_override.c')
-rw-r--r--source/blender/blenkernel/intern/lib_override.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index ebe8043d41d..112c4c21a27 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -702,6 +702,9 @@ static void lib_override_library_create_post_process(Main *bmain,
base = BKE_view_layer_base_find(view_layer, ob_new);
DEG_id_tag_update_ex(
bmain, &ob_new->id, ID_RECALC_TRANSFORM | ID_RECALC_BASE_FLAGS);
+ if (is_resync) {
+ ob_new->id.flag |= LIB_LIB_OVERRIDE_RESYNC_LEFTOVER;
+ }
}
if (ob_new == (Object *)ob_reference->id.newid && base != NULL) {
@@ -713,6 +716,9 @@ static void lib_override_library_create_post_process(Main *bmain,
view_layer, ob_new, is_resync)) {
BKE_collection_object_add(bmain, collection_new, ob_new);
DEG_id_tag_update_ex(bmain, &ob_new->id, ID_RECALC_TRANSFORM | ID_RECALC_BASE_FLAGS);
+ if (is_resync) {
+ ob_new->id.flag |= LIB_LIB_OVERRIDE_RESYNC_LEFTOVER;
+ }
}
}
}
@@ -729,6 +735,9 @@ static void lib_override_library_create_post_process(Main *bmain,
else {
BKE_collection_object_add_from(bmain, scene, (Object *)id_root, ob_new);
}
+ if (is_resync) {
+ ob_new->id.flag |= LIB_LIB_OVERRIDE_RESYNC_LEFTOVER;
+ }
}
break;
}
@@ -1087,6 +1096,7 @@ bool BKE_lib_override_library_resync(Main *bmain,
/* Otherwise, keep them, user needs to decide whether what to do with them. */
BLI_assert((id->tag & LIB_TAG_DOIT) == 0);
id_fake_user_set(id);
+ id->flag |= LIB_LIB_OVERRIDE_RESYNC_LEFTOVER;
CLOG_INFO(&LOG, 2, "Old override %s is being kept around as it was user-edited", id->name);
}
}