From f76f48be23e04dbbbe313e428636cfcbcf2be59c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 8 Mar 2022 12:08:21 +0100 Subject: [PATCH] Fix (unreported) liboverride rules from linked data disapearing. Code cleaning up no-more-needed override data during diffing process would systematically remove override data from linked IDs. While this is not a critical issue in theory, it has bad consequences at the very least on user UI/UX, and potentially can cause bugs in some corner-cases scenarii. --- source/blender/blenkernel/intern/lib_override.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c index 6a0f3bb5611..392af2c9f5b 100644 --- a/source/blender/blenkernel/intern/lib_override.c +++ b/source/blender/blenkernel/intern/lib_override.c @@ -2979,6 +2979,12 @@ bool BKE_lib_override_library_main_operations_create(Main *bmain, const bool for id->override_library, IDOVERRIDE_LIBRARY_TAG_UNUSED, false); } } + else { + /* Clear 'unused' tag for un-processed IDs, otherwise e.g. linked overrides will loose their + * list of overridden properties. */ + BKE_lib_override_library_properties_tag( + id->override_library, IDOVERRIDE_LIBRARY_TAG_UNUSED, false); + } id->tag &= ~LIB_TAG_OVERRIDE_LIBRARY_AUTOREFRESH; } FOREACH_MAIN_ID_END;