LibLink Append: Fix 'reused ID' case keeping linked data around.
When we re-use a local ID, we need to delete the matching linked data.
This commit is contained in:
parent
6f53988e7a
commit
cb173d05dc
Notes:
blender-bot
2023-02-14 03:29:37 +01:00
Referenced by issue #91709, Blender 3.0 Append Bug
|
@ -805,6 +805,27 @@ static void wm_append_do(WMLinkAppendData *lapp_data,
|
|||
BKE_libblock_relink_to_newid_new(bmain, id);
|
||||
}
|
||||
|
||||
/* Remove linked IDs when a local existing data has been reused instead. */
|
||||
for (itemlink = lapp_data->items.list; itemlink; itemlink = itemlink->next) {
|
||||
WMLinkAppendDataItem *item = itemlink->link;
|
||||
|
||||
if (item->append_action != WM_APPEND_ACT_REUSE_LOCAL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ID *id = item->new_id;
|
||||
if (id == NULL) {
|
||||
continue;
|
||||
}
|
||||
BLI_assert(ID_IS_LINKED(id));
|
||||
BLI_assert(id->newid != NULL);
|
||||
BLI_assert((id->tag & LIB_TAG_DOIT) == 0);
|
||||
|
||||
id->tag |= LIB_TAG_DOIT;
|
||||
item->new_id = id->newid;
|
||||
}
|
||||
BKE_id_multi_tagged_delete(bmain);
|
||||
|
||||
/* Instantiate newly created (duplicated) IDs as needed. */
|
||||
wm_append_loose_data_instantiate(lapp_data, bmain, scene, view_layer, v3d);
|
||||
|
||||
|
|
Loading…
Reference in New Issue