From 7ddc49ad34acc21dc69ca82c9913234033f7c209 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 22 Oct 2020 15:46:31 +1100 Subject: Fix T81905: Active keyframe unavailable when handle selected Selecting an F-Curve handle caused an assertion as well as treating the key-frame as inactive. Allow active the keyframe to be active when it's handle is selected, as is done with bezier curves. --- source/blender/blenkernel/intern/fcurve.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index fafcbaec10f..dcf4c78dfd8 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -842,7 +842,8 @@ bool BKE_fcurve_calc_range( void BKE_fcurve_active_keyframe_set(FCurve *fcu, const BezTriple *active_bezt) { /* The active keyframe should always be selected. */ - BLI_assert(active_bezt == NULL || (active_bezt->f2 & SELECT)); + BLI_assert((active_bezt == NULL) || + ((active_bezt->f1 | active_bezt->f2 | active_bezt->f3) & SELECT)); fcu->active_keyframe_index = (active_bezt == NULL) ? FCURVE_ACTIVE_KEYFRAME_NONE : active_bezt - fcu->bezt; } @@ -861,7 +862,7 @@ int BKE_fcurve_active_keyframe_index(const FCurve *fcu) } const BezTriple *active_bezt = &fcu->bezt[active_keyframe_index]; - if ((active_bezt->f2 & SELECT) == 0) { + if (((active_bezt->f1 | active_bezt->f2 | active_bezt->f3) & SELECT) == 0) { /* The active keyframe should always be selected. If it's not selected, it can't be active. */ return FCURVE_ACTIVE_KEYFRAME_NONE; } -- cgit v1.2.3