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
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2021-10-05 18:04:35 +0300
committerBastien Montagne <bastien@blender.org>2021-11-02 16:29:33 +0300
commit9a80455d8774d6b189ae1ad7441646401b029ea5 (patch)
tree990478851f77ddd637b9c26a7160822b4aed75b9 /source
parent9a290dd6571d2998900222aabcb2b6660acef883 (diff)
Fix missing proper 'make local' call for liboverrides from outliner.
Also includes minor improvements to `BKE_lib_override_library_make_local` itself. This is a complement to rB37458798fa02c.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/lib_override.c10
-rw-r--r--source/blender/editors/space_outliner/outliner_tools.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index fd78e72b9a7..1ba6acf52d0 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -1321,6 +1321,16 @@ void BKE_lib_override_library_delete(Main *bmain, ID *id_root)
*/
void BKE_lib_override_library_make_local(ID *id)
{
+ if (!ID_IS_OVERRIDE_LIBRARY(id)) {
+ return;
+ }
+ if (ID_IS_OVERRIDE_LIBRARY_VIRTUAL(id)) {
+ /* We should never directly 'make local' virtual overrides (aka shape keys). */
+ BLI_assert_unreachable();
+ id->flag &= ~LIB_EMBEDDED_DATA_LIB_OVERRIDE;
+ return;
+ }
+
BKE_lib_override_library_free(&id->override_library, true);
Key *shape_key = BKE_key_from_id(id);
diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c
index b20d6a4a43c..f16e6cbe6f4 100644
--- a/source/blender/editors/space_outliner/outliner_tools.c
+++ b/source/blender/editors/space_outliner/outliner_tools.c
@@ -757,7 +757,7 @@ static void id_local_fn(bContext *C,
}
}
else if (ID_IS_OVERRIDE_LIBRARY_REAL(tselem->id)) {
- BKE_lib_override_library_free(&tselem->id->override_library, true);
+ BKE_lib_override_library_make_local(tselem->id);
}
}