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:
@ -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;
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user