wayland: Keep track of button modifier state
Keep track of the button modifier mask state in ClutterInputDeviceWayland and push its state to new button events going out. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> https://bugzilla.gnome.org/show_bug.cgi?id=708781
This commit is contained in:
parent
a96daf82c2
commit
a4440b718d
@ -107,6 +107,7 @@ clutter_wayland_handle_button (void *data,
|
||||
ClutterStageCogl *stage_cogl;
|
||||
ClutterEvent *event;
|
||||
ClutterEventType type;
|
||||
ClutterModifierType modifier_mask = 0;
|
||||
|
||||
if (!device->pointer_focus)
|
||||
return;
|
||||
@ -130,15 +131,28 @@ clutter_wayland_handle_button (void *data,
|
||||
switch (button) {
|
||||
case 272:
|
||||
event->button.button = 1;
|
||||
modifier_mask = CLUTTER_BUTTON1_MASK;
|
||||
break;
|
||||
case 273:
|
||||
event->button.button = 3;
|
||||
modifier_mask = CLUTTER_BUTTON2_MASK;
|
||||
break;
|
||||
case 274:
|
||||
event->button.button = 2;
|
||||
modifier_mask = CLUTTER_BUTTON3_MASK;
|
||||
break;
|
||||
}
|
||||
|
||||
if (modifier_mask)
|
||||
{
|
||||
if (state)
|
||||
device->button_modifier_state |= modifier_mask;
|
||||
else
|
||||
device->button_modifier_state &= ~modifier_mask;
|
||||
}
|
||||
|
||||
event->button.modifier_state = device->button_modifier_state;
|
||||
|
||||
_clutter_event_push (event, FALSE);
|
||||
}
|
||||
|
||||
|
@ -53,6 +53,7 @@ struct _ClutterInputDeviceWayland
|
||||
guint repeat_time;
|
||||
guint repeat_source;
|
||||
gboolean is_initial_repeat;
|
||||
ClutterModifierType button_modifier_state;
|
||||
};
|
||||
|
||||
GType _clutter_input_device_wayland_get_type (void) G_GNUC_CONST;
|
||||
|
Loading…
Reference in New Issue
Block a user