Bugfix: The infamous "bone properties/constraints disappearing after renaming bones" bug

This was simply caused by the lookup hash-table not being updated to be aware of the new name. Now the hashes are updated, so the name lookups (used for UI drawing among other things) works ok again after renaming bones.

This closes (open) reports: 22882, 21801
and the closed/duplicate reports: 22067, 22670, 22384, 22665
This commit is contained in:
Joshua Leung 2010-07-20 11:17:47 +00:00
parent b8ba541b90
commit c547323f1c

@ -5479,8 +5479,17 @@ void ED_armature_bone_rename(bArmature *arm, char *oldnamep, char *newnamep)
/* Rename the pose channel, if it exists */
if (ob->pose) {
bPoseChannel *pchan = get_pose_channel(ob->pose, oldname);
if (pchan)
if (pchan) {
BLI_strncpy(pchan->name, newname, MAXBONENAME);
if (ob->pose->chanhash) {
GHash *gh = ob->pose->chanhash;
/* remove the old hash entry, and replace with the new name */
BLI_ghash_remove(gh, oldname, NULL, NULL);
BLI_ghash_insert(gh, pchan->name, pchan);
}
}
}
/* Update any object constraints to use the new bone name */