Index: transform.c =================================================================== --- transform.c (revision 24148) +++ transform.c (working copy) @@ -576,6 +576,10 @@ t->redraw = 1; + if (t->state == TRANS_STARTING) { + t->state = TRANS_RUNNING; + } + applyMouseInput(t, &t->mouse, t->mval, t->values); } @@ -586,7 +590,10 @@ t->state = TRANS_CANCEL; break; case TFM_MODAL_CONFIRM: - t->state = TRANS_CONFIRM; + /* only switch when... */ + if (t->state != TRANS_STARTING) { + t->state = TRANS_CONFIRM; + } break; case TFM_MODAL_TRANSLATE: @@ -1351,7 +1358,7 @@ /* added initialize, for external calls to set stuff in TransInfo, like undo string */ - t->state = TRANS_RUNNING; + t->state = TRANS_STARTING; t->options = options; @@ -1560,7 +1567,7 @@ { int exit_code = OPERATOR_RUNNING_MODAL; - if (t->state != TRANS_RUNNING) + if (t->state != TRANS_STARTING && t->state != TRANS_RUNNING) { /* handle restoring objects */ if(t->state == TRANS_CANCEL) Index: transform.h =================================================================== --- transform.h (revision 24148) +++ transform.h (working copy) @@ -326,9 +326,10 @@ #define NDOF_INIT 1 /* transinfo->state */ -#define TRANS_RUNNING 0 -#define TRANS_CONFIRM 1 -#define TRANS_CANCEL 2 +#define TRANS_STARTING 0 +#define TRANS_RUNNING 1 +#define TRANS_CONFIRM 2 +#define TRANS_CANCEL 3 /* transinfo->flag */ #define T_OBJECT (1 << 0)