diff options
author | Bastien Montagne <bastien@blender.org> | 2022-08-18 13:24:54 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-08-18 13:24:54 +0300 |
commit | c3757504233ab7b1dca7102bb9239423d6419efc (patch) | |
tree | 6038ff26b8ef9e85e863b203cbee02f0bbf4a4e9 | |
parent | 80b7902a56c88777c6dd3c199fd195aa537cbf5d (diff) |
Fix T100476: Shift click to create overrides on objects not working.
Case where object was directly linked and not owned by a linked
collection was not properly handled, added some level of support for it
now.
Note that the behavior may not always be ideal in cases where the linked
object would be linked in many different local collecitons, hard to get
best solution always from this Editor given limited hierarchy data
available here.
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 35e368bc6d6..bec4506ca41 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -683,7 +683,7 @@ ID *ui_template_id_liboverride_hierarchy_create( * NOTE: do not attempt to perform such hierarchy override at all cost, if there is not enough * context, better to abort than create random overrides all over the place. */ if (!ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY(id)) { - RNA_warning("The data-block %s is not direclty overridable", id->name); + RNA_warning("The data-block %s is not overridable", id->name); return NULL; } @@ -789,6 +789,15 @@ ID *ui_template_id_liboverride_hierarchy_create( BKE_lib_override_library_create( bmain, scene, view_layer, NULL, id, &collection_active->id, NULL, &id_override, false); } + else { + if (object_active != NULL) { + object_active->id.tag |= LIB_TAG_DOIT; + } + BKE_lib_override_library_create( + bmain, scene, view_layer, NULL, id, NULL, NULL, &id_override, false); + BKE_scene_collections_object_remove(bmain, scene, (Object *)id, true); + WM_event_add_notifier(C, NC_ID | NA_REMOVED, NULL); + } break; case ID_ME: case ID_CU_LEGACY: |