From 146a0e94477372f3dc5e52902cc99aba642c5a9c Mon Sep 17 00:00:00 2001 From: julianeisel Date: Mon, 26 Jan 2015 02:51:09 +0100 Subject: UI: macro for checking modifiers Useful for UI handling where its common to check multiple modifiers at once. --- source/blender/windowmanager/wm_event_types.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'source/blender/windowmanager/wm_event_types.h') diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 2301405a8ea..1edded22232 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -369,6 +369,18 @@ enum { (event_type >= LEFTCTRLKEY && event_type <= LEFTSHIFTKEY) == false && \ (event_type >= UNKNOWNKEY && event_type <= GRLESSKEY) == false) +/* internal helpers*/ +#define _VA_IS_EVENT_MOD2(v, a) (CHECK_TYPE_INLINE(v, wmEvent *), \ + ((v)->a)) +#define _VA_IS_EVENT_MOD3(v, a, b) \ + (_VA_IS_EVENT_MOD2(v, a) || ((v)->b)) +#define _VA_IS_EVENT_MOD4(v, a, b, c) \ + (_VA_IS_EVENT_MOD3(v, a, b) || ((v)->c)) +#define _VA_IS_EVENT_MOD5(v, a, b, c, d) \ + (_VA_IS_EVENT_MOD4(v, a, b, c) || ((v)->d)) + +/* reusable IS_EVENT_MOD(event, shift, ctrl, alt, oskey), macro */ +#define IS_EVENT_MOD(...) VA_NARGS_CALL_OVERLOAD(_VA_IS_EVENT_MOD, __VA_ARGS__) /* ********** wmEvent.val ********** */ -- cgit v1.2.3