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:
authorAlexander Gavrilov <angavrilov@gmail.com>2018-11-19 20:34:25 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2018-11-19 20:35:21 +0300
commit0ff05daee04d3ccc01b3c3980fdfc65951cdea9b (patch)
treee16805dc489cf217d2b8a7f39007149b5cd6f71f /source/blender/editors/armature
parent7bb512594cd9502fea290ac6124f2eb5fd3cfce8 (diff)
Fix handling of B-Bone custom handle references in Edit mode undo.
Correct a couple of places that should process the handle pointers.
Diffstat (limited to 'source/blender/editors/armature')
-rw-r--r--source/blender/editors/armature/armature_relations.c9
-rw-r--r--source/blender/editors/armature/armature_utils.c6
2 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/editors/armature/armature_relations.c b/source/blender/editors/armature/armature_relations.c
index 0e95b6c3467..28bab00e665 100644
--- a/source/blender/editors/armature/armature_relations.c
+++ b/source/blender/editors/armature/armature_relations.c
@@ -549,8 +549,15 @@ static void separate_armature_bones(Main *bmain, Object *ob, short sel)
/* clear the pchan->parent var of any pchan that had this as its parent */
for (pchn = ob->pose->chanbase.first; pchn; pchn = pchn->next) {
- if (pchn->parent == pchan)
+ if (pchn->parent == pchan) {
pchn->parent = NULL;
+ }
+ if (pchn->bbone_next == pchan) {
+ pchn->bbone_next = NULL;
+ }
+ if (pchn->bbone_prev == pchan) {
+ pchn->bbone_prev = NULL;
+ }
}
/* free any of the extra-data this pchan might have */
diff --git a/source/blender/editors/armature/armature_utils.c b/source/blender/editors/armature/armature_utils.c
index 339f0306779..53b07c59973 100644
--- a/source/blender/editors/armature/armature_utils.c
+++ b/source/blender/editors/armature/armature_utils.c
@@ -816,6 +816,12 @@ void ED_armature_ebone_listbase_copy(ListBase *lb_dst, ListBase *lb_src)
if (ebone_dst->parent) {
ebone_dst->parent = ebone_dst->parent->temp.ebone;
}
+ if (ebone_dst->bbone_next) {
+ ebone_dst->bbone_next = ebone_dst->bbone_next->temp.ebone;
+ }
+ if (ebone_dst->bbone_prev) {
+ ebone_dst->bbone_prev = ebone_dst->bbone_prev->temp.ebone;
+ }
}
}