diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-12-18 13:54:02 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-12-18 14:14:38 +0300 |
commit | a3e4c333b999b26aa33ad2dfda8fa8403b021c83 (patch) | |
tree | 4a8021bcc5d95a60a22c83a90510857225f2cc2b /source/blender/editors/transform | |
parent | e5c6dd396494a617303c6cea956343e4303403b8 (diff) |
Transform: when snap affect is off for a transform mode, ignore snap settings entirely.
Ref D4022.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform.c | 12 | ||||
-rw-r--r-- | source/blender/editors/transform/transform.h | 2 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 18 |
3 files changed, 21 insertions, 11 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 60c1f4f1f40..90bfaf7bc9d 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -2101,11 +2101,13 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } /* do we check for parameter? */ - if (t->modifiers & MOD_SNAP) { - ts->snap_flag |= SCE_SNAP; - } - else { - ts->snap_flag &= ~SCE_SNAP; + if (transformModeUseSnap(t)) { + if (t->modifiers & MOD_SNAP) { + ts->snap_flag |= SCE_SNAP; + } + else { + ts->snap_flag &= ~SCE_SNAP; + } } if (t->spacetype == SPACE_VIEW3D) { diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index ca341fc8738..75044e77110 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -783,6 +783,8 @@ typedef enum { SMALL_GEARS = 2 } GearsType; +bool transformModeUseSnap(const TransInfo *t); + void snapGridIncrement(TransInfo *t, float *val); void snapGridIncrementAction(TransInfo *t, float *val, GearsType action); diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index c2c864b51ad..3a73c2386a8 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -137,21 +137,27 @@ bool activeSnap(const TransInfo *t) ((t->modifiers & (MOD_SNAP | MOD_SNAP_INVERT)) == MOD_SNAP_INVERT); } -static bool doForceIncrementSnap(const TransInfo *t) +bool transformModeUseSnap(const TransInfo *t) { - const ToolSettings *ts = t->settings; + ToolSettings *ts = t->settings; if (t->mode == TFM_TRANSLATION) { - return ts->snap_force_increment_flag & SCE_SNAP_FORCE_INCREMENT_TRANSLATE; + return (ts->snap_transform_mode_flag & SCE_SNAP_TRANSFORM_MODE_TRANSLATE) != 0; } if (t->mode == TFM_ROTATION) { - return ts->snap_force_increment_flag & SCE_SNAP_FORCE_INCREMENT_ROTATE; + return (ts->snap_transform_mode_flag & SCE_SNAP_TRANSFORM_MODE_ROTATE) != 0; } if (t->mode == TFM_RESIZE) { - return ts->snap_force_increment_flag & SCE_SNAP_FORCE_INCREMENT_SCALE; + return (ts->snap_transform_mode_flag & SCE_SNAP_TRANSFORM_MODE_SCALE) != 0; } + return false; } +static bool doForceIncrementSnap(const TransInfo *t) +{ + return !transformModeUseSnap(t); +} + void drawSnapping(const struct bContext *C, TransInfo *t) { unsigned char col[4], selectedCol[4], activeCol[4]; @@ -656,7 +662,7 @@ void initSnapping(TransInfo *t, wmOperator *op) /* use scene defaults only when transform is modal */ else if (t->flag & T_MODAL) { if (ELEM(t->spacetype, SPACE_VIEW3D, SPACE_IMAGE, SPACE_NODE)) { - if (ts->snap_flag & SCE_SNAP) { + if (transformModeUseSnap(t) && (ts->snap_flag & SCE_SNAP)) { t->modifiers |= MOD_SNAP; } |