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:
authorCampbell Barton <ideasman42@gmail.com>2019-02-27 18:30:26 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-02-27 18:37:17 +0300
commit03da3b6593a24d24af60ec13ffb218ad06b5fd66 (patch)
treeda930385c3b8bed9ccec2c1042e001590fa4305b /source/blender/editors/transform
parent4cd7dc6860a63d96b484372818c024b2cdd6379b (diff)
Transform: fix redo rotate adjusting orientation
Regression in recent update. Also de-duplicate orientation matrix initialization.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform.c32
-rw-r--r--source/blender/editors/transform/transform_generics.c4
-rw-r--r--source/blender/editors/transform/transform_orientations.c14
3 files changed, 22 insertions, 28 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 878f9385c04..6f979460f8b 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -2226,8 +2226,10 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
* so use the orientation in the constraint if set */
/* Use 'orient_matrix' instead. */
- if (orientation != V3D_ORIENT_CUSTOM_MATRIX) {
- RNA_property_enum_set(op->ptr, prop, orientation);
+ if (t->flag & T_MODAL) {
+ if (orientation != V3D_ORIENT_CUSTOM_MATRIX) {
+ RNA_property_enum_set(op->ptr, prop, orientation);
+ }
}
}
@@ -3459,10 +3461,6 @@ static void initShear(TransInfo *t)
t->orient_axis = 2;
t->orient_axis_ortho = 1;
}
- if (t->orient_matrix_is_set == false) {
- t->orient_matrix_is_set = true;
- copy_m3_m3(t->orient_matrix, t->spacemtx);
- }
initShear_mouseInputMode(t);
@@ -4166,18 +4164,6 @@ static void initRotation(TransInfo *t)
if (t->flag & T_2D_EDIT)
t->flag |= T_NO_CONSTRAINT;
-
- if ((t->options & CTX_PAINT_CURVE) == 0) {
- if (t->orient_matrix_is_set == false) {
- t->orient_matrix_is_set = true;
- t->orientation.unset = V3D_ORIENT_VIEW;
- copy_m3_m4(t->orient_matrix, t->viewinv);
- normalize_m3(t->orient_matrix);
- negate_m3(t->orient_matrix);
- }
- }
-
- t->orient_axis = 2;
}
/* Used by Transform Rotation and Transform Normal Rotation */
@@ -4692,16 +4678,6 @@ static void initNormalRotation(TransInfo *t)
storeCustomLNorValue(tc, bm);
}
-
- if (t->orient_matrix_is_set == false) {
- t->orient_matrix_is_set = true;
- t->orientation.unset = V3D_ORIENT_VIEW;
- copy_m3_m4(t->orient_matrix, t->viewinv);
- normalize_m3(t->orient_matrix);
- negate_m3(t->orient_matrix);
- }
-
- t->orient_axis = 2;
}
/* Works by getting custom normal from clnor_data, transform, then store */
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 46eeb049b42..4039252e500 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1342,6 +1342,10 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
/* Leave 't->orient_matrix_is_set' to false,
* so we overwrite it when we have a useful value. */
+ /* Default to rotate on the Z axis. */
+ t->orient_axis = 2;
+ t->orient_axis_ortho = 1;
+
/* if there's an event, we're modal */
if (event) {
t->flag |= T_MODAL;
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index 019ea2c0580..b486976bfad 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -483,6 +483,20 @@ void initTransformOrientation(bContext *C, TransInfo *t)
}
break;
}
+
+ if (t->orient_matrix_is_set == false) {
+ t->orient_matrix_is_set = true;
+ if (t->flag & T_MODAL) {
+ /* Rotate for example defaults to operating on the view plane. */
+ t->orientation.unset = V3D_ORIENT_VIEW;
+ copy_m3_m4(t->orient_matrix, t->viewinv);
+ normalize_m3(t->orient_matrix);
+ }
+ else {
+ copy_m3_m3(t->orient_matrix, t->spacemtx);
+ }
+ negate_m3(t->orient_matrix);
+ }
}
/**