WM: backport event/keymap type util from 2.8

This commit is contained in:
Campbell Barton
2018-06-08 08:46:31 +02:00
parent a25c11fd8d
commit e3fe8ce00b
2 changed files with 31 additions and 0 deletions

View File

@@ -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 */

View File

@@ -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)
{