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:
authorCampbell Barton <ideasman42@gmail.com>2018-12-12 13:39:55 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-12-12 13:43:26 +0300
commit4357fb63db77d8bee9b1a3d10fdf6abd55e4c798 (patch)
tree477adefe8069f2e09d091086fbf4bfb2968878fd /source/blender/windowmanager/wm_event_types.h
parentadaadb2fa0a4fde53f5f09bc05f6758926e71f44 (diff)
Keymap: event type filter w/ finding keymap items
Now its possibly to ask for only keyboard/mouse/ndof events when finding key map items.
Diffstat (limited to 'source/blender/windowmanager/wm_event_types.h')
-rw-r--r--source/blender/windowmanager/wm_event_types.h39
1 files changed, 36 insertions, 3 deletions
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index b2c4c0494ce..0fc4899e401 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -381,9 +381,7 @@ enum {
/* test whether event type is acceptable as hotkey, excluding modifiers */
#define ISHOTKEY(event_type) \
((ISKEYBOARD(event_type) || ISMOUSE(event_type) || ISNDOF(event_type)) && \
- ((event_type) != ESCKEY) && \
- ((event_type) >= LEFTCTRLKEY && (event_type) <= LEFTSHIFTKEY) == false && \
- ((event_type) >= UNKNOWNKEY && (event_type) <= GRLESSKEY) == false)
+ (ISKEYMODIFIER(event_type) == false))
/* internal helpers*/
#define _VA_IS_EVENT_MOD2(v, a) (CHECK_TYPE_INLINE(v, wmEvent *), \
@@ -398,6 +396,41 @@ enum {
/* reusable IS_EVENT_MOD(event, shift, ctrl, alt, oskey), macro */
#define IS_EVENT_MOD(...) VA_NARGS_CALL_OVERLOAD(_VA_IS_EVENT_MOD, __VA_ARGS__)
+enum eEventType_Mask {
+ /* ISKEYMODIFIER */
+ EVT_TYPE_MASK_KEYBOARD_MODIFIER = (1 << 0),
+ /* ISKEYBOARD */
+ EVT_TYPE_MASK_KEYBOARD = (1 << 1) | EVT_TYPE_MASK_KEYBOARD_MODIFIER,
+ /* ISMOUSE_WHEEL */
+ EVT_TYPE_MASK_MOUSE_WHEEL = (1 << 2),
+ /* ISMOUSE_BUTTON */
+ EVT_TYPE_MASK_MOUSE_GESTURE = (1 << 3),
+ /* ISMOUSE_GESTURE */
+ EVT_TYPE_MASK_MOUSE_BUTTON = (1 << 4),
+ /* ISMOUSE */
+ EVT_TYPE_MASK_MOUSE = (1 << 5) | EVT_TYPE_MASK_MOUSE_WHEEL | EVT_TYPE_MASK_MOUSE_GESTURE | EVT_TYPE_MASK_MOUSE_BUTTON,
+ /* ISNDOF */
+ EVT_TYPE_MASK_NDOF = (1 << 6),
+ /* ISTWEAK */
+ EVT_TYPE_MASK_TWEAK = (1 << 7),
+ /* IS_EVENT_ACTIONZONE */
+ EVT_TYPE_MASK_ACTIONZONE = (1 << 8),
+};
+#define EVT_TYPE_MASK_ALL \
+ (EVT_TYPE_MASK_KEYBOARD | \
+ EVT_TYPE_MASK_MOUSE | \
+ EVT_TYPE_MASK_NDOF | \
+ EVT_TYPE_MASK_TWEAK | \
+ EVT_TYPE_MASK_ACTIONZONE)
+
+#define EVT_TYPE_MASK_HOTKEY_INCLUDE \
+ (EVT_TYPE_MASK_KEYBOARD | EVT_TYPE_MASK_MOUSE | EVT_TYPE_MASK_NDOF)
+#define EVT_TYPE_MASK_HOTKEY_EXCLUDE \
+ EVT_TYPE_MASK_KEYBOARD_MODIFIER
+
+bool WM_event_type_mask_test(const int event_type, const enum eEventType_Mask mask);
+
+
/* ********** wmEvent.val ********** */
/* Gestures */