diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c index d5aa77fa76..f01de4bf21 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb.c @@ -1445,7 +1445,7 @@ ecore_x_window_button_grab(Ecore_X_Window window, uint16_t locks[8]; uint16_t ev; - m = mod; + m = _ecore_x_event_modifier(mod); if (any_mod) m = XCB_BUTTON_MASK_ANY; locks[0] = 0; locks[1] = ECORE_X_LOCK_CAPS; @@ -1516,7 +1516,7 @@ ecore_x_window_button_ungrab(Ecore_X_Window window, uint16_t m; uint16_t locks[8]; - m = mod; + m = _ecore_x_event_modifier(mod); if (any_mod) m = XCB_BUTTON_MASK_ANY; locks[0] = 0; locks[1] = ECORE_X_LOCK_CAPS; @@ -1559,7 +1559,7 @@ ecore_x_window_key_grab(Ecore_X_Window window, /* } */ if (keycode == 0) return; - m = mod; + m = _ecore_x_event_modifier(mod); if (any_mod) m = XCB_BUTTON_MASK_ANY; locks[0] = 0; locks[1] = ECORE_X_LOCK_CAPS; @@ -1625,7 +1625,7 @@ ecore_x_window_key_ungrab(Ecore_X_Window window, /* } */ if (keycode == 0) return; - m = mod; + m = _ecore_x_event_modifier(mod); if (any_mod) m = XCB_BUTTON_MASK_ANY; locks[0] = 0; locks[1] = ECORE_X_LOCK_CAPS; @@ -1877,3 +1877,19 @@ ecore_x_pointer_last_xy_get(int *x, /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ + +static int +_ecore_x_event_modifier(unsigned int state) +{ + int xmodifiers = 0; + + if (state & ECORE_EVENT_MODIFIER_SHIFT) xmodifiers |= ECORE_X_MODIFIER_SHIFT; + if (state & ECORE_EVENT_MODIFIER_CTRL) xmodifiers |= ECORE_X_MODIFIER_CTRL; + if (state & ECORE_EVENT_MODIFIER_ALT) xmodifiers |= ECORE_X_MODIFIER_ALT; + if (state & ECORE_EVENT_MODIFIER_WIN) xmodifiers |= ECORE_X_MODIFIER_WIN; + if (state & ECORE_EVENT_LOCK_SCROLL) xmodifiers |= ECORE_X_LOCK_SCROLL; + if (state & ECORE_EVENT_LOCK_NUM) xmodifiers |= ECORE_X_LOCK_NUM; + if (state & ECORE_EVENT_LOCK_CAPS) xmodifiers |= ECORE_X_LOCK_CAPS; + + return xmodifiers; +}