Commit: 823144f0a67b81aa3135e4d6401cf246ed2c0472
Author: Campbell Barton
Date:   Fri Jun 23 11:13:46 2017 +1000
Branches: blender2.8
https://developer.blender.org/rB823144f0a67b81aa3135e4d6401cf246ed2c0472

Manipulator: add tweak-snap (not used yet)

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

M       source/blender/windowmanager/manipulators/WM_manipulator_types.h
M       source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
M       source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h

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

diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h 
b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index 119d77b1181..b2256002c6f 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -185,11 +185,14 @@ enum {
 /**
  * \brief Manipulator tweak flag.
  * Bitflag passed to manipulator while tweaking.
+ *
+ * \note Manipulators are responsible for handling this #wmManipulator.modal 
callback!.
  */
 enum {
-       /* drag with extra precision (shift)
-        * NOTE: Manipulators are responsible for handling this 
(manipulator->handler callback)! */
+       /* Drag with extra precision (Shift). */
        WM_MANIPULATOR_TWEAK_PRECISE = (1 << 0),
+       /* Drag with snap enabled (Ctrl).  */
+       WM_MANIPULATOR_TWEAK_SNAP = (1 << 1),
 };
 
 typedef struct wmManipulatorType {
diff --git 
a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c 
b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
index e9d7356df3a..3b58526069f 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
@@ -313,12 +313,20 @@ static int manipulator_tweak_modal(bContext *C, 
wmOperator *op, const wmEvent *e
                        case TWEAK_MODAL_CONFIRM:
                                manipulator_tweak_finish(C, op, false);
                                return OPERATOR_FINISHED;
+
                        case TWEAK_MODAL_PRECISION_ON:
                                mtweak->flag |= WM_MANIPULATOR_TWEAK_PRECISE;
                                break;
                        case TWEAK_MODAL_PRECISION_OFF:
                                mtweak->flag &= ~WM_MANIPULATOR_TWEAK_PRECISE;
                                break;
+
+                       case TWEAK_MODAL_SNAP_ON:
+                               mtweak->flag |= WM_MANIPULATOR_TWEAK_SNAP;
+                               break;
+                       case TWEAK_MODAL_SNAP_OFF:
+                               mtweak->flag &= ~WM_MANIPULATOR_TWEAK_SNAP;
+                               break;
                }
        }
 
@@ -408,6 +416,8 @@ static wmKeyMap 
*manipulatorgroup_tweak_modal_keymap(wmKeyConfig *keyconf, const
                {TWEAK_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""},
                {TWEAK_MODAL_PRECISION_ON, "PRECISION_ON", 0, "Enable 
Precision", ""},
                {TWEAK_MODAL_PRECISION_OFF, "PRECISION_OFF", 0, "Disable 
Precision", ""},
+               {TWEAK_MODAL_SNAP_ON, "SNAP_ON", 0, "Enable Snap", ""},
+               {TWEAK_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Disable Snap", ""},
                {0, NULL, 0, NULL, NULL}
        };
 
@@ -434,6 +444,10 @@ static wmKeyMap 
*manipulatorgroup_tweak_modal_keymap(wmKeyConfig *keyconf, const
        WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, 
TWEAK_MODAL_PRECISION_ON);
        WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, 
TWEAK_MODAL_PRECISION_OFF);
 
+       WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_PRESS, KM_ANY, 0, 
TWEAK_MODAL_SNAP_ON);
+       WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_RELEASE, KM_ANY, 0, 
TWEAK_MODAL_SNAP_OFF);
+       WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, 
TWEAK_MODAL_SNAP_ON);
+       WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, 
TWEAK_MODAL_SNAP_OFF);
 
        WM_modalkeymap_assign(keymap, "MANIPULATORGROUP_OT_manipulator_tweak");
 
diff --git 
a/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h 
b/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
index 1e667913530..6ddde1df9de 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
@@ -58,6 +58,8 @@ enum {
        TWEAK_MODAL_CONFIRM,
        TWEAK_MODAL_PRECISION_ON,
        TWEAK_MODAL_PRECISION_OFF,
+       TWEAK_MODAL_SNAP_ON,
+       TWEAK_MODAL_SNAP_OFF,
 };
 
 struct wmManipulatorGroup *wm_manipulatorgroup_new_from_type(

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

Reply via email to