st-button: Ignore pointer emulated touch events
In X11, pointer emulated touch events are replicated with normal PRESS, RELEASE pair events which are generated by the server. Thus for a single tap we get: - TOUCH_BEGIN -> TOUCH_END, PRESS -> RELEASE This will cause st-button to send two "clicked" signals, instead of just one, breaking extensions (like dash-to-dock) that show buttons in the main stage which will be checked two times or that will receive the same signal two times. (cherry picked from commit 4c11d15a074aeca72627c44e327e2dc2afa93ae3)
This commit is contained in:
parent
f645368c66
commit
5246da5837
@ -248,14 +248,17 @@ st_button_touch_event (ClutterActor *actor,
|
||||
if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence)
|
||||
{
|
||||
clutter_input_device_sequence_grab (device, sequence, actor);
|
||||
st_button_press (button, device, 0, sequence);
|
||||
if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
|
||||
st_button_press (button, device, 0, sequence);
|
||||
return CLUTTER_EVENT_STOP;
|
||||
}
|
||||
else if (event->type == CLUTTER_TOUCH_END &&
|
||||
priv->device == device &&
|
||||
priv->press_sequence == sequence)
|
||||
{
|
||||
st_button_release (button, device, mask, 0, sequence);
|
||||
if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
|
||||
st_button_release (button, device, mask, 0, sequence);
|
||||
|
||||
clutter_input_device_sequence_ungrab (device, sequence);
|
||||
return CLUTTER_EVENT_STOP;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user