Commit: a3e4c333b999b26aa33ad2dfda8fa8403b021c83
Author: Brecht Van Lommel
Date:   Tue Dec 18 11:54:02 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBa3e4c333b999b26aa33ad2dfda8fa8403b021c83

Transform: when snap affect is off for a transform mode, ignore snap settings 
entirely.

Ref D4022.

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

M       release/scripts/startup/bl_ui/space_view3d.py
M       source/blender/blenkernel/intern/scene.c
M       source/blender/blenloader/intern/versioning_280.c
M       source/blender/editors/transform/transform.c
M       source/blender/editors/transform/transform.h
M       source/blender/editors/transform/transform_snap.c
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py 
b/release/scripts/startup/bl_ui/space_view3d.py
index de1502375cf..3c713de9a71 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -5225,12 +5225,6 @@ class VIEW3D_PT_snapping(Panel):
             col.prop(tool_settings, "use_snap_grid_absolute")
 
         if snap_elements != {'INCREMENT'}:
-            col.label(text="Affect")
-            row = col.row(align=True)
-            row.prop(tool_settings, "use_snap_force_increment_translate", 
text="Move")
-            row.prop(tool_settings, "use_snap_force_increment_rotate", 
text="Rotate")
-            row.prop(tool_settings, "use_snap_force_increment_scale", 
text="Scale")
-
             col.label(text="Target")
             row = col.row(align=True)
             row.prop(tool_settings, "snap_target", expand=True)
@@ -5247,6 +5241,12 @@ class VIEW3D_PT_snapping(Panel):
             if 'VOLUME' in snap_elements:
                 col.prop(tool_settings, "use_snap_peel_object")
 
+        col.label(text="Affect")
+        row = col.row(align=True)
+        row.prop(tool_settings, "use_snap_translate", text="Move", toggle=True)
+        row.prop(tool_settings, "use_snap_rotate", text="Rotate", toggle=True)
+        row.prop(tool_settings, "use_snap_scale", text="Scale", toggle=True)
+
 
 class VIEW3D_PT_transform_orientations(Panel):
     bl_space_type = 'VIEW_3D'
diff --git a/source/blender/blenkernel/intern/scene.c 
b/source/blender/blenkernel/intern/scene.c
index cd0e437ec7e..3a9d22f559b 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -670,7 +670,7 @@ void BKE_scene_init(Scene *sce)
        sce->toolsettings->snap_mode = SCE_SNAP_MODE_INCREMENT;
        sce->toolsettings->snap_node_mode = SCE_SNAP_MODE_GRID;
        sce->toolsettings->snap_uv_mode = SCE_SNAP_MODE_INCREMENT;
-       sce->toolsettings->snap_force_increment_flag = 
SCE_SNAP_FORCE_INCREMENT_ROTATE | SCE_SNAP_FORCE_INCREMENT_SCALE;
+       sce->toolsettings->snap_transform_mode_flag = 
SCE_SNAP_TRANSFORM_MODE_TRANSLATE;
 
        sce->toolsettings->curve_paint_settings.curve_type = CU_BEZIER;
        sce->toolsettings->curve_paint_settings.flag |= 
CURVE_PAINT_FLAG_CORNERS_DETECT;
diff --git a/source/blender/blenloader/intern/versioning_280.c 
b/source/blender/blenloader/intern/versioning_280.c
index 4eda9bc7a12..a2a2c3fb738 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2737,10 +2737,10 @@ void blo_do_versions_280(FileData *fd, Library 
*UNUSED(lib), Main *bmain)
        {
                /* Versioning code until next subversion bump goes here. */
 
-               if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", 
"snap_force_increment_flag")) {
+               if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", 
"snap_transform_mode_flag")) {
                        for (Scene *scene = bmain->scene.first; scene; scene = 
scene->id.next) {
-                               scene->toolsettings->snap_force_increment_flag =
-                                       SCE_SNAP_FORCE_INCREMENT_ROTATE | 
SCE_SNAP_FORCE_INCREMENT_SCALE;
+                               scene->toolsettings->snap_transform_mode_flag =
+                                       SCE_SNAP_TRANSFORM_MODE_TRANSLATE;
                        }
                }
        }
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;
                        }
 
diff --git a/source/blender/makesdna/DNA_scene_types.h 
b/source/blender/makesdna/DNA_scene_types.h
index 8be63add398..d312566a4fd 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1351,7 +1351,7 @@ typedef struct ToolSettings {
        char snap_uv_mode;
        char snap_flag;
        char snap_target;
-       char snap_force_increment_flag;
+       char snap_transform_mode_flag;
 
 
        char proportional, prop_mode;
@@ -1910,11 +1910,11 @@ enum {
 #define SCE_SNAP_MODE_NODE_X    (1 << 6)
 #define SCE_SNAP_MODE_NODE_Y    (1 << 7)
 
-/** #ToolSettings.snap_force_increment_flag */
+/** #ToolSettings.snap_transform_mode_flag */
 enum {
-       SCE_SNAP_FORCE_INCREMENT_TRANSLATE  = (1 << 0),
-       SCE_SNAP_FORCE_INCREMENT_ROTATE     = (1 << 1),
-       SCE_SNAP_FORCE_INCREMENT_SCALE      = (1 << 2),
+       SCE_SNAP_TRANSFORM_MODE_TRANSLATE  = (1 << 0),
+       SCE_SNAP_TRANSFORM_MODE_ROTATE     = (1 << 1),
+       SCE_SNAP_TRANSFORM_MODE_SCALE      = (1 << 2),
 };
 
 /* ToolSettings.selectmode */
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 52e4c62ea00..037b16ab5df 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2478,24 +2478,24 @@ static void rna_def_tool_settings(BlenderRNA  *brna)
        RNA_def_property_ui_text(prop, "Project onto Self", "Snap onto itself 
(Edit Mode Only)");
        RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* 
header redraw */
 
-       prop = RNA_def_property(srna, "use_snap_force_increment_translate", 
PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, 
"snap_force_increment_flag", SCE_SNAP_FORCE_INCREMENT_TRANSLATE);
-       RNA_def_property_ui_text(prop, "Resctrict Translation",
-                                "Translate uses the snapping modes, otherwise 
use increment snapping");
+       prop = RNA_def_property(srna, "use_snap_translate", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "snap_transform_mode_flag", 
SCE_SNAP_TRANSFORM_MODE_TRANSLATE);
+       RNA_def_property_ui_text(prop, "Use Snap for Translation",
+                                "Move is affected by snapping settings");
        RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* 
header redraw */
 
-       prop = RNA_def_property(srna, "use_snap_force_increment_rotate", 
PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, 
"snap_force_increment_flag", SCE_SNAP_FORCE_INCREMENT_ROTATE);
+       prop = RNA_def_property(srna, "use_snap_rotate", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "snap_transform_mode_flag", 
SCE_SNAP_TRANSFORM_MODE_ROTATE);
        RNA_def_property_boolean_default(prop, false);
-       RNA_def_property_ui_text(prop, "Resctrict Rotate",
-                                "Rotate uses the snapping modes, otherwise use 
increment snapping");
+       RNA_def_property_ui_text(prop, "Use Snap for Rotation",
+                                "Rotate is affected by the snapping settings");
        RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* 
header redraw */
 
-       prop = RNA_def_property(srna, "use_snap_force_increment_scale", 
PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, 
"snap_force_increment_flag", SCE_SNAP_FORCE_INCREMENT_SCALE);
+       prop = RNA_def_property(srna, "use_snap_scale", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "snap_transform_mode_flag", 
SCE_SNAP_TRANSFORM_MODE_SCALE);
        RNA_def_property_boolean_default(prop, false);
-       RNA_def_property_ui_text(prop, "Resctrict Scale",
-                                "Scale uses the snapping modes, otherwise use 
increment snapping");
+       RNA_def_property_ui_text(prop, "Use Snap for Scale",
+                                "Scale is affected by snapping settings");
        RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL); /* 
header redraw */
 
        prop = RNA_def_property(srna, "use_gizmo_mode", PROP_ENUM, PROP_NONE);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to