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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-18 13:54:02 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-18 14:14:38 +0300
commita3e4c333b999b26aa33ad2dfda8fa8403b021c83 (patch)
tree4a8021bcc5d95a60a22c83a90510857225f2cc2b /source/blender/editors/transform
parente5c6dd396494a617303c6cea956343e4303403b8 (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.c12
-rw-r--r--source/blender/editors/transform/transform.h2
-rw-r--r--source/blender/editors/transform/transform_snap.c18
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;
}