diff --git a/source/blender/blenkernel/BKE_lib_remap.h b/source/blender/blenkernel/BKE_lib_remap.h index 57afbefd508..f62225179bd 100644 --- a/source/blender/blenkernel/BKE_lib_remap.h +++ b/source/blender/blenkernel/BKE_lib_remap.h @@ -57,7 +57,9 @@ enum { ID_REMAP_FORCE_NEVER_NULL_USAGE = 1 << 3, /** Do not remap library override pointers. */ ID_REMAP_SKIP_OVERRIDE_LIBRARY = 1 << 5, - /** Don't touch the user count (use for low level actions such as swapping pointers). */ + /** Don't touch the special user counts (use when the 'old' remapped ID remains in use): + * - Do not transfer 'fake user' status from old to new ID. + * - Do not clear 'extra user' from old ID. */ ID_REMAP_SKIP_USER_CLEAR = 1 << 6, /** * Force internal ID runtime pointers (like `ID.newid`, `ID.orig_id` etc.) to also be processed. diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index eed187b1b0a..e203d32a658 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -274,7 +274,7 @@ static void scene_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int scene_dst->nodetree, (void *)(&scene_src->id), &scene_dst->id, - ID_REMAP_SKIP_NEVER_NULL_USAGE); + ID_REMAP_SKIP_NEVER_NULL_USAGE | ID_REMAP_SKIP_USER_CLEAR); } if (scene_src->rigidbody_world) {