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:
Diffstat (limited to 'source/blender/blenkernel/intern/fcurve.c')
-rw-r--r--source/blender/blenkernel/intern/fcurve.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index d2a9064a373..d57ef45107c 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -839,6 +839,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->f2 & SELECT);
fcu->active_keyframe_index = (active_bezt == NULL) ? FCURVE_ACTIVE_KEYFRAME_NONE :
active_bezt - fcu->bezt;
}
@@ -850,12 +852,18 @@ int BKE_fcurve_active_keyframe_index(const FCurve *fcu)
{
const int active_keyframe_index = fcu->active_keyframe_index;
- /* Sanity checks. */
+ /* Array access boundary checks. */
if ((fcu->bezt == NULL) || (active_keyframe_index >= fcu->totvert) ||
(active_keyframe_index < 0)) {
return FCURVE_ACTIVE_KEYFRAME_NONE;
}
+ const BezTriple *active_bezt = &fcu->bezt[active_keyframe_index];
+ if ((active_bezt->f2 & SELECT) == 0) {
+ /* The active keyframe should always be selected. If it's not selected, it can't be active. */
+ return FCURVE_ACTIVE_KEYFRAME_NONE;
+ }
+
return active_keyframe_index;
}