From 3f0227eb85b8e3133380da4a5e32626f9147f232 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 23 Apr 2014 16:38:09 +1200 Subject: Fix T39850: Graph Editor - 'Mirror Over First Selected Marker' mirrors over frame 0 instead Problem was introduced back in 2.70 during Project Pampa when the FCurve Normalisation feature was introduced. The cause was that the normalised cursor value was always getting passed to the KeyframeEditData context, even when it wasn't needed. --- source/blender/editors/space_graph/graph_edit.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'source/blender/editors/space_graph') diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 702f6af4071..73b28f75048 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -2090,12 +2090,16 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) /* mirror keyframes */ for (ale = anim_data.first; ale; ale = ale->next) { AnimData *adt = ANIM_nla_mapping_get(ac, ale); - short mapping_flag = ANIM_get_normalization_flags(ac); - float unit_scale = ANIM_unit_mapping_get_factor(ac->scene, ale->id, ale->key_data, mapping_flag | ANIM_UNITCONV_ONLYKEYS); - + /* apply unit corrections */ - ked.f1 = cursor_value * unit_scale; - + if (mode == GRAPHKEYS_MIRROR_VALUE) { + short mapping_flag = ANIM_get_normalization_flags(ac); + float unit_scale = ANIM_unit_mapping_get_factor(ac->scene, ale->id, ale->key_data, mapping_flag | ANIM_UNITCONV_ONLYKEYS); + + ked.f1 = cursor_value * unit_scale; + } + + /* perform actual mirroring */ if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); -- cgit v1.2.3