From 141064d7ae3f2e9277ba272d582c0a72c1500e1c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Sat, 15 Nov 2014 17:57:29 +0100 Subject: Fix T42567: Color Wheel Buttons do not autokey correctly. In fact, any button controlling a whole array of values were broken because they always only keyed the index of the single fcurve returned by `ui_but_get_fcurve()`, now pass button's rna_index value instead. --- source/blender/editors/interface/interface_anim.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/interface/interface_anim.c') diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 43899f906ad..aa23184727a 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -219,7 +219,14 @@ void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra) short flag = ANIM_get_keyframing_flags(scene, 1); fcu->flag &= ~FCURVE_SELECTED; - insert_keyframe(reports, id, action, ((fcu->grp) ? (fcu->grp->name) : (NULL)), fcu->rna_path, fcu->array_index, cfra, flag); + + /* Note: We use but->rnaindex instead of fcu->array_index, + * because a button may control all items of an array at once. + * E.g., color wheels (see T42567). */ + BLI_assert((fcu->array_index == but->rnaindex) || (but->rnaindex == -1)); + insert_keyframe(reports, id, action, ((fcu->grp) ? (fcu->grp->name) : (NULL)), + fcu->rna_path, but->rnaindex, cfra, flag); + WM_event_add_notifier(C, NC_ANIMATION | ND_KEYFRAME | NA_EDITED, NULL); } } -- cgit v1.2.3