diff options
author | Bastien Montagne <bastien@blender.org> | 2021-04-07 16:50:53 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-04-08 12:31:24 +0300 |
commit | 8b68a75872372197d8b38c516f054d07f0b7ad30 (patch) | |
tree | 6d9d94078e68293ed84947b12e673127ee724cb0 /source/blender | |
parent | de6f19ce2256a8a6a8529297feb499b423163c9e (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')
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.c | 10 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_ID.h | 5 |
2 files changed, 15 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); } } diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index d88db091cc2..f9524fac72d 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -491,6 +491,11 @@ enum { * Note that this also applies to shapekeys, even though they are not 100% embedded data... */ LIB_EMBEDDED_DATA_LIB_OVERRIDE = 1 << 12, + /** + * The override data-block appears to not be needed anymore after resync with linked data, but it + * was kept around (because e.g. detected as user-edited). + */ + LIB_LIB_OVERRIDE_RESYNC_LEFTOVER = 1 << 13, }; /** |