diff options
-rw-r--r-- | source/blender/editors/transform/transform.c | 10 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_constraints.c | 13 |
2 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index df36acf5c1f..975f4370425 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -845,6 +845,10 @@ int transformEvent(TransInfo *t, const wmEvent *event) handled = true; } else if (event->type == MOUSEMOVE) { + if (t->modifiers & (MOD_CONSTRAINT_SELECT_AXIS | MOD_CONSTRAINT_SELECT_PLANE)) { + t->con.mode |= CON_SELECT; + } + copy_v2_v2_int(t->mval, event->mval); /* Use this for soft redraw. Might cause flicker in object mode */ @@ -1112,8 +1116,10 @@ int transformEvent(TransInfo *t, const wmEvent *event) if (t->con.mode & CON_APPLY) { stopConstraint(t); } - - initSelectConstraint(t); + else { + initSelectConstraint(t); + postSelectConstraint(t); + } } } t->redraw |= TREDRAW_HARD; diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index 0ccabf5798f..81b35e4539b 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -984,7 +984,6 @@ void initSelectConstraint(TransInfo *t) } setUserConstraint(t, CON_APPLY | CON_SELECT, "%s"); - selectConstraint(t); } void selectConstraint(TransInfo *t) @@ -997,7 +996,19 @@ void selectConstraint(TransInfo *t) void postSelectConstraint(TransInfo *t) { + if (!(t->con.mode & CON_SELECT)) { + return; + } + + t->con.mode &= ~CON_AXIS0; + t->con.mode &= ~CON_AXIS1; + t->con.mode &= ~CON_AXIS2; t->con.mode &= ~CON_SELECT; + + setNearestAxis(t); + + startConstraint(t); + t->redraw = TREDRAW_HARD; } static void setNearestAxis2d(TransInfo *t) |