Fix T95636: Dragging Material from Asset Browser (Link mode) to Viewport empty space removes this material from all objects

Trust user count to actually delete or not the dragged ID when current
dragging is cancelled, since it may be already used by others.

NOTE: This is more a band-aid fix than anything else, cancelling drag
has a lot of other issues here (like never deleting any indirectly
linked/appended data, etc.). It needs a proper rethink in general.
This commit is contained in:
Bastien Montagne 2022-02-25 11:37:55 +01:00
parent 5186a28dec
commit 66328db703
Notes: blender-bot 2023-02-13 16:16:25 +01:00
Referenced by issue #95636, Dragging Material from Asset Browser (Link mode) to Viewport empty space removes this material from all objects
1 changed files with 6 additions and 2 deletions

View File

@ -620,8 +620,12 @@ void WM_drag_free_imported_drag_ID(struct Main *bmain, wmDrag *drag, wmDropBox *
}
ID *id = BKE_libblock_find_name(bmain, asset_drag->id_type, name);
if (id) {
BKE_id_delete(bmain, id);
if (id != NULL) {
/* Do not delete the dragged ID if it has any user, otherwise if it is a 're-used' ID it will
* cause T95636. Note that we need first to add the user that we want to remove in
* #BKE_id_free_us. */
id_us_plus(id);
BKE_id_free_us(bmain, id);
}
}