Commit: e3fe8ce00b74b64f099ca28ca76fadba1dd9985e
Author: Campbell Barton
Date:   Fri Jun 8 08:46:31 2018 +0200
Branches: master
https://developer.blender.org/rBe3fe8ce00b74b64f099ca28ca76fadba1dd9985e

WM: backport event/keymap type util from 2.8

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

M       source/blender/windowmanager/WM_api.h
M       source/blender/windowmanager/intern/wm_event_system.c

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

diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index 75b2cfffd03..3324fec4cac 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -143,6 +143,7 @@ float               WM_cursor_pressure      (const struct 
wmWindow *win);
 
                        /* event map */
 int                    WM_userdef_event_map(int kmitype);
+int                    WM_userdef_event_type_from_keymap_type(int kmitype);
 
                        /* handlers */
 
diff --git a/source/blender/windowmanager/intern/wm_event_system.c 
b/source/blender/windowmanager/intern/wm_event_system.c
index 5974d4fddee..b9feb4cba09 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1610,6 +1610,36 @@ int WM_userdef_event_map(int kmitype)
        return kmitype;
 }
 
+/**
+ * Use so we can check if 'wmEvent.type' is released in modal operators.
+ *
+ * An alternative would be to add a 'wmEvent.type_nokeymap'... or similar.
+ */
+int WM_userdef_event_type_from_keymap_type(int kmitype)
+{
+       switch (kmitype) {
+               case SELECTMOUSE:
+                       return (U.flag & USER_LMOUSESELECT) ? LEFTMOUSE : 
RIGHTMOUSE;
+               case ACTIONMOUSE:
+                       return (U.flag & USER_LMOUSESELECT) ? RIGHTMOUSE : 
LEFTMOUSE;
+               case EVT_TWEAK_S:
+                       return (U.flag & USER_LMOUSESELECT) ? LEFTMOUSE : 
RIGHTMOUSE;
+               case EVT_TWEAK_A:
+                       return (U.flag & USER_LMOUSESELECT) ? RIGHTMOUSE : 
LEFTMOUSE;
+               case EVT_TWEAK_L:
+                       return LEFTMOUSE;
+               case EVT_TWEAK_M:
+                       return MIDDLEMOUSE;
+               case EVT_TWEAK_R:
+                       return RIGHTMOUSE;
+               case WHEELOUTMOUSE:
+                       return (U.uiflag & USER_WHEELZOOMDIR) ? WHEELUPMOUSE : 
WHEELDOWNMOUSE;
+               case WHEELINMOUSE:
+                       return (U.uiflag & USER_WHEELZOOMDIR) ? WHEELDOWNMOUSE 
: WHEELUPMOUSE;
+       }
+
+       return kmitype;
+}
 
 static int wm_eventmatch(const wmEvent *winevent, wmKeyMapItem *kmi)
 {

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

Reply via email to