From f751e7dc77dd5cd69b2dd8073838d8472dc8070a Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 17 Jun 2015 01:35:01 +1200 Subject: Partial Fix T44997: Propagate pose on selected keyframes only included those after the current frame This behaviour was confusing, since "selected keyframes" suggests that it covers all selected keyframes (instead of trying to do this based on frame ranges). --- source/blender/editors/armature/pose_slide.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/armature/pose_slide.c b/source/blender/editors/armature/pose_slide.c index 1a1108a2b1c..d583fd864b0 100644 --- a/source/blender/editors/armature/pose_slide.c +++ b/source/blender/editors/armature/pose_slide.c @@ -1173,13 +1173,20 @@ static void pose_propagate_fcurve(wmOperator *op, Object *ob, FCurve *fcu, * since it may be as of yet unkeyed * - if starting before the starting frame, don't touch the key, as it may have had some valid * values + * - if only doing selected keyframes, start from the first one */ - match = binarysearch_bezt_index(fcu->bezt, startFrame, fcu->totvert, &keyExists); - - if (fcu->bezt[match].vec[1][0] < startFrame) - i = match + 1; - else - i = match; + if (mode != POSE_PROPAGATE_SELECTED_KEYS) { + match = binarysearch_bezt_index(fcu->bezt, startFrame, fcu->totvert, &keyExists); + + if (fcu->bezt[match].vec[1][0] < startFrame) + i = match + 1; + else + i = match; + } + else { + /* selected - start from first keyframe */ + i = 0; + } for (bezt = &fcu->bezt[i]; i < fcu->totvert; i++, bezt++) { /* additional termination conditions based on the operator 'mode' property go here... */ -- cgit v1.2.3