Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2010-07-20 15:17:47 +0400
committerJoshua Leung <aligorith@gmail.com>2010-07-20 15:17:47 +0400
commitc547323f1c1aaa94d4b3a3159508138f58404608 (patch)
treeb5ff9458f84d54798687fa1861be75b66a85575e /source/blender/editors/armature
parentb8ba541b90b3b287033703477490859feaf39e44 (diff)
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
Diffstat (limited to 'source/blender/editors/armature')
-rw-r--r--source/blender/editors/armature/editarmature.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index b0c45616f1c..0cf6ce3656e 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -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 */