From 0ff05daee04d3ccc01b3c3980fdfc65951cdea9b Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Mon, 19 Nov 2018 20:34:25 +0300 Subject: [PATCH] Fix handling of B-Bone custom handle references in Edit mode undo. Correct a couple of places that should process the handle pointers. --- source/blender/editors/armature/armature_relations.c | 9 ++++++++- source/blender/editors/armature/armature_utils.c | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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; + } } }