[Bf-blender-cvs] [2f63e479313] master: Fix T76504: Change in behavior of constraints orientation

Germano Cavalcante noreply at git.blender.org
Thu May 7 21:52:37 CEST 2020


Commit: 2f63e479313332756d0879b841527a31fa1d30b3
Author: Germano Cavalcante
Date:   Thu May 7 15:49:10 2020 -0300
Branches: master
https://developer.blender.org/rB2f63e479313332756d0879b841527a31fa1d30b3

Fix T76504: Change in behavior of constraints orientation

The Extrude operator, whose orientation is NORMAL, has undergone some seemingly accidental changes:
- In 2.79 if you press the same key as the axis in constraint, it changes from Normal to No Contraint -> Global -> Normal and repeat this.
- In 2.80 it changes from Normal to Local -> No Contraint -> Global -> Local and repeat this.

This committee resumes the behavior of 2.79

===================================================================

M	source/blender/editors/transform/transform.c
M	source/blender/editors/transform/transform_generics.c

===================================================================

diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index f3306caa931..c15c8aefddf 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -825,11 +825,15 @@ static void transform_event_xyz_constraint(TransInfo *t, short key_type, bool is
       }
     }
     else if (!edit_2d) {
-      if (ELEM(cmode, '\0', axis)) {
+      if (cmode == axis) {
         /* Successive presses on existing axis, cycle orientation modes. */
         t->orientation.index = (t->orientation.index + 1) % ARRAY_SIZE(t->orientation.types);
         initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
       }
+      else if (t->orientation.index != 1) {
+        t->orientation.index = 1;
+        initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
+      }
 
       if (t->orientation.index == 0) {
         stopConstraint(t);
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index e4063c055d6..9d94d229b25 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1681,13 +1681,21 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
     }
 
     t->orientation.types[0] = orient_type_default;
-    t->orientation.types[1] = orient_type_constraint;
-    t->orientation.types[2] = orient_type_constraint != V3D_ORIENT_GLOBAL ? V3D_ORIENT_GLOBAL :
-                                                                            V3D_ORIENT_LOCAL;
     t->orientation.custom = custom_orientation;
 
+    /* To keep the old behavior logic to init contraint orientarions became this: */
+    t->orientation.types[1] = V3D_ORIENT_GLOBAL;
+    t->orientation.types[2] = orient_type_constraint != V3D_ORIENT_GLOBAL ?
+                                  orient_type_constraint :
+                                  V3D_ORIENT_LOCAL;
+
     if (t->con.mode & CON_APPLY) {
-      t->orientation.index = 1;
+      if (orient_type_constraint == V3D_ORIENT_GLOBAL) {
+        t->orientation.index = 1;
+      }
+      else {
+        t->orientation.index = 2;
+      }
     }
   }



More information about the Bf-blender-cvs mailing list