clutter/stage: Don't update modifier state when queuing event

The modifier state of the input device is supposed to be set to the
newest state, while the modifier state detail of the event is set to the
last state before the event (so not including the changes triggered by
the event).

So since the modifier state of the event is the last state anyway, the
state of the ClutterInputDevice is supposed to be set by the backend and
not by the stage while queuing the event, so stop setting the state
here.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1275
This commit is contained in:
Jonas Dreßler 2020-05-18 11:35:11 +02:00 committed by verdre
parent 7539de2320
commit b36cfb5bdc

View File

@ -1129,7 +1129,6 @@ _clutter_stage_queue_event (ClutterStage *stage,
event->type != CLUTTER_PROXIMITY_IN && event->type != CLUTTER_PROXIMITY_IN &&
event->type != CLUTTER_PROXIMITY_OUT) event->type != CLUTTER_PROXIMITY_OUT)
{ {
ClutterModifierType event_state = clutter_event_get_state (event);
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event); ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
guint32 event_time = clutter_event_get_time (event); guint32 event_time = clutter_event_get_time (event);
gfloat event_x, event_y; gfloat event_x, event_y;
@ -1137,7 +1136,6 @@ _clutter_stage_queue_event (ClutterStage *stage,
clutter_event_get_coords (event, &event_x, &event_y); clutter_event_get_coords (event, &event_x, &event_y);
_clutter_input_device_set_coords (device, sequence, event_x, event_y, stage); _clutter_input_device_set_coords (device, sequence, event_x, event_y, stage);
_clutter_input_device_set_state (device, event_state);
_clutter_input_device_set_time (device, event_time); _clutter_input_device_set_time (device, event_time);
} }