Pass group state to _gdk_x11_device_xi2_translate_state

This will be necessary to make groups work with XI2.
This commit is contained in:
Matthias Clasen
2011-02-04 21:01:52 -05:00
parent 2c352f51a0
commit d4c1dbe3d7
3 changed files with 11 additions and 9 deletions

View File

@ -361,7 +361,7 @@ gdk_x11_device_xi2_query_state (GdkDevice *device,
*win_y = (gint) xwin_y; *win_y = (gint) xwin_y;
if (mask) if (mask)
*mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state); *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
free (button_state.mask); free (button_state.mask);
@ -602,7 +602,7 @@ gdk_x11_device_xi2_window_at_position (GdkDevice *device,
*win_y = (window) ? (gint) xwin_y : -1; *win_y = (window) ? (gint) xwin_y : -1;
if (mask) if (mask)
*mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state); *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
free (button_state.mask); free (button_state.mask);
@ -685,7 +685,8 @@ _gdk_x11_device_xi2_translate_event_mask (GdkEventMask event_mask,
guint guint
_gdk_x11_device_xi2_translate_state (XIModifierState *mods_state, _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state,
XIButtonState *buttons_state) XIButtonState *buttons_state,
XIGroupState *group_state)
{ {
guint state = 0; guint state = 0;

View File

@ -1017,7 +1017,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->key.window = window; event->key.window = window;
event->key.time = xev->time; event->key.time = xev->time;
event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
event->key.group = _gdk_x11_get_group_for_state (display, event->key.state); event->key.group = _gdk_x11_get_group_for_state (display, event->key.state);
event->key.hardware_keycode = xev->detail; event->key.hardware_keycode = xev->detail;
@ -1095,7 +1095,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
GUINT_TO_POINTER (xev->sourceid)); GUINT_TO_POINTER (xev->sourceid));
gdk_event_set_source_device (event, source_device); gdk_event_set_source_device (event, source_device);
event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
break; break;
} }
/* else (XI_ButtonRelease) fall thru */ /* else (XI_ButtonRelease) fall thru */
@ -1131,7 +1131,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
gdk_device_get_axis (device, event->button.axes, GDK_AXIS_Y, &event->button.y); gdk_device_get_axis (device, event->button.axes, GDK_AXIS_Y, &event->button.y);
} }
event->button.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->button.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
event->button.button = xev->detail; event->button.button = xev->detail;
} }
@ -1167,7 +1167,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
GUINT_TO_POINTER (xev->sourceid)); GUINT_TO_POINTER (xev->sourceid));
gdk_event_set_source_device (event, source_device); gdk_event_set_source_device (event, source_device);
event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
/* There doesn't seem to be motion hints in XI */ /* There doesn't seem to be motion hints in XI */
event->motion.is_hint = FALSE; event->motion.is_hint = FALSE;
@ -1216,7 +1216,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->crossing.mode = translate_crossing_mode (xev->mode); event->crossing.mode = translate_crossing_mode (xev->mode);
event->crossing.detail = translate_notify_type (xev->detail); event->crossing.detail = translate_notify_type (xev->detail);
event->crossing.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->crossing.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
} }
break; break;
case XI_FocusIn: case XI_FocusIn:

View File

@ -241,7 +241,8 @@ void _gdk_x11_device_xi_translate_axes (GdkDevice *device,
guchar * _gdk_x11_device_xi2_translate_event_mask (GdkEventMask event_mask, guchar * _gdk_x11_device_xi2_translate_event_mask (GdkEventMask event_mask,
gint *len); gint *len);
guint _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state, guint _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state,
XIButtonState *buttons_state); XIButtonState *buttons_state,
XIGroupState *group_state);
void _gdk_x11_event_translate_keyboard_string (GdkEventKey *event); void _gdk_x11_event_translate_keyboard_string (GdkEventKey *event);