[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