diff options
author | Bastien Montagne <bastien@blender.org> | 2021-10-05 18:04:35 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-11-02 16:29:33 +0300 |
commit | 9a80455d8774d6b189ae1ad7441646401b029ea5 (patch) | |
tree | 990478851f77ddd637b9c26a7160822b4aed75b9 | |
parent | 9a290dd6571d2998900222aabcb2b6660acef883 (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.
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.c | 10 | ||||
-rw-r--r-- | source/blender/editors/space_outliner/outliner_tools.c | 2 |
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); } } |