diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-04-27 18:07:07 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-04-27 18:07:29 +0300 |
commit | a4df7f78a8816ca463cb09f23ac64b989cd8ebb0 (patch) | |
tree | f51e7aaf39256ccd783928a27eb5212461378189 | |
parent | 61f094132126d7c1552ac0675488b2a3ec3af4bd (diff) |
Fix T75398: Redo with Shift R always uses the previous pivot center
Overwriting the pivot center was an attempt to fix T71455.
The solution now is to save the direction in the "mirror" property.
-rw-r--r-- | source/blender/editors/transform/transform.c | 5 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_convert.c | 12 |
2 files changed, 10 insertions, 7 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d0866968daa..d376c71d867 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1651,11 +1651,6 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } } - if ((prop = RNA_struct_find_property(op->ptr, "center_override"))) { - /* Important for redo operations. */ - RNA_property_float_set_array(op->ptr, prop, t->center_global); - } - if (t->flag & T_PROP_EDIT_ALL) { if (t->flag & T_PROP_EDIT) { proportional |= PROP_EDIT_USE; diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c index 14f9365096d..4ae6964f739 100644 --- a/source/blender/editors/transform/transform_convert.c +++ b/source/blender/editors/transform/transform_convert.c @@ -823,17 +823,25 @@ void clipUVData(TransInfo *t) */ char transform_convert_frame_side_dir_get(TransInfo *t, float cframe) { + char r_dir; Scene *scene = t->scene; float center[2]; if (t->flag & T_MODAL) { UI_view2d_region_to_view( (View2D *)t->view, t->mouse.imval[0], t->mouse.imval[1], ¢er[0], ¢er[1]); + r_dir = (center[0] > cframe) ? 'R' : 'L'; + { + /* XXX: This saves the direction in the "mirror" property to be used for redo! */ + if (r_dir == 'R') { + t->flag |= T_NO_MIRROR; + } + } } else { - copy_v2_v2(center, t->center_global); + r_dir = (t->flag & T_NO_MIRROR) ? 'R' : 'L'; } - return (center[0] > cframe) ? 'R' : 'L'; + return r_dir; } /* This function tests if a point is on the "mouse" side of the cursor/frame-marking */ |