[Bf-blender-cvs] [823144f0a67] blender2.8: Manipulator: add tweak-snap (not used yet)

Campbell Barton noreply at git.blender.org
Fri Jun 23 03:12:00 CEST 2017


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(




More information about the Bf-blender-cvs mailing list