From 11be9edae263194d0ce4fa0d43ad44f04db9a491 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 5 Oct 2021 17:04:35 +0200 Subject: 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. --- source/blender/blenkernel/intern/lib_override.c | 10 ++++++++++ source/blender/editors/space_outliner/outliner_tools.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c index 68675e5fc91..59e431b737c 100644 --- a/source/blender/blenkernel/intern/lib_override.c +++ b/source/blender/blenkernel/intern/lib_override.c @@ -1918,6 +1918,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 9e314701719..75bdc5dbac6 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -742,7 +742,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); } } -- cgit v1.2.3