Fix T96452: Armature corrupted after undoing 'Join' operation.
Modified source Armature ID in the join operation was not properly tagged as such for the depsgraph (and therefore memfile undo).. Issue caused/revealed by rBe648e388874a. Should be backported to 3.1 should we make a corrective release.
This commit is contained in:
parent
256d36683b
commit
2156841c8c
Notes:
blender-bot
2023-02-14 06:17:14 +01:00
Referenced by issue #96452, Armature corrupted after undo Referenced by issue #96241, 3.1: Potential candidates for corrective releases
|
@ -377,6 +377,15 @@ int ED_armature_join_objects_exec(bContext *C, wmOperator *op)
|
|||
BKE_pose_channels_hash_free(pose);
|
||||
}
|
||||
|
||||
/* Armature ID itself is not freed below, however it has been modified (and is now completely
|
||||
* empty). This needs to be told to the depsgraph, it will also ensure that the global
|
||||
* memfile undo system properly detects the change.
|
||||
*
|
||||
* FIXME: Modifying an existing obdata because we are joining an object using it into another
|
||||
* object is a very questionable behavior, which also does not match with other object types
|
||||
* joining. */
|
||||
DEG_id_tag_update_ex(bmain, &curarm->id, ID_RECALC_GEOMETRY);
|
||||
|
||||
/* Fix all the drivers (and animation data) */
|
||||
BKE_fcurves_main_cb(bmain, joined_armature_fix_animdata_cb, &afd);
|
||||
BLI_ghash_free(afd.names_map, MEM_freeN, NULL);
|
||||
|
|
Loading…
Reference in New Issue