From d5bc0fb4bbdbfa970c66c6f0d688feeffd3d28c0 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 8 Aug 2025 12:30:04 +0200 Subject: [PATCH] Fix #144065: Do not transfer special user count (e.g. the fake user) when duplicating. --- source/blender/blenkernel/intern/brush.cc | 2 +- source/blender/blenkernel/intern/collection.cc | 3 ++- source/blender/blenkernel/intern/object.cc | 3 ++- source/blender/blenkernel/intern/scene.cc | 3 ++- source/blender/editors/object/object_add.cc | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/brush.cc b/source/blender/blenkernel/intern/brush.cc index d6a718de0a0..8c541a0697d 100644 --- a/source/blender/blenkernel/intern/brush.cc +++ b/source/blender/blenkernel/intern/brush.cc @@ -675,7 +675,7 @@ Brush *BKE_brush_duplicate(Main *bmain, if (!is_subprocess) { /* This code will follow into all ID links using an ID tagged with ID_TAG_NEW. */ - BKE_libblock_relink_to_newid(bmain, &new_brush->id, 0); + BKE_libblock_relink_to_newid(bmain, &new_brush->id, ID_REMAP_SKIP_USER_CLEAR); #ifndef NDEBUG /* Call to `BKE_libblock_relink_to_newid` above is supposed to have cleared all those flags. */ diff --git a/source/blender/blenkernel/intern/collection.cc b/source/blender/blenkernel/intern/collection.cc index 447aa1c72c4..afaf011ceb1 100644 --- a/source/blender/blenkernel/intern/collection.cc +++ b/source/blender/blenkernel/intern/collection.cc @@ -772,7 +772,8 @@ Collection *BKE_collection_duplicate(Main *bmain, * using the original obdata ID, leading to them being falsly detected as being in Edit mode, * and therefore not remapping their obdata to the newly duplicated one. * See #139715. */ - BKE_libblock_relink_to_newid(bmain, &collection_new->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE); + BKE_libblock_relink_to_newid( + bmain, &collection_new->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE | ID_REMAP_SKIP_USER_CLEAR); #ifndef NDEBUG /* Call to `BKE_libblock_relink_to_newid` above is supposed to have cleared all those flags. */ diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc index afdec910556..35d472323ac 100644 --- a/source/blender/blenkernel/intern/object.cc +++ b/source/blender/blenkernel/intern/object.cc @@ -2664,7 +2664,8 @@ Object *BKE_object_duplicate(Main *bmain, * using the original obdata ID, leading to them being falsly detected as being in Edit mode, * and therefore not remapping their obdata to the newly duplicated one. * See #139715. */ - BKE_libblock_relink_to_newid(bmain, &obn->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE); + BKE_libblock_relink_to_newid( + bmain, &obn->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE | ID_REMAP_SKIP_USER_CLEAR); #ifndef NDEBUG /* Call to `BKE_libblock_relink_to_newid` above is supposed to have cleared all those flags. */ diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index 7995f6fd373..da21d605449 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -1983,7 +1983,8 @@ Scene *BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type) * using the original obdata ID, leading to them being falsly detected as being in Edit mode, * and therefore not remapping their obdata to the newly duplicated one. * See #139715. */ - BKE_libblock_relink_to_newid(bmain, &sce_copy->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE); + BKE_libblock_relink_to_newid( + bmain, &sce_copy->id, ID_REMAP_FORCE_OBDATA_IN_EDITMODE | ID_REMAP_SKIP_USER_CLEAR); #ifndef NDEBUG /* Call to `BKE_libblock_relink_to_newid` above is supposed to have cleared all those diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 3821d968d7c..c51ef2aaaf0 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -2342,7 +2342,7 @@ static void copy_object_set_idnew(bContext *C) Main *bmain = CTX_data_main(C); CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { - BKE_libblock_relink_to_newid(bmain, &ob->id, 0); + BKE_libblock_relink_to_newid(bmain, &ob->id, ID_REMAP_SKIP_USER_CLEAR); } CTX_DATA_END;