44 lines
1.8 KiB
Diff
44 lines
1.8 KiB
Diff
|
From 4c11d15a074aeca72627c44e327e2dc2afa93ae3 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||
|
Date: Thu, 25 Oct 2018 06:35:25 +0200
|
||
|
Subject: [PATCH 17/25] 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.
|
||
|
---
|
||
|
src/st/st-button.c | 7 +++++--
|
||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/st/st-button.c b/src/st/st-button.c
|
||
|
index 8f5c4922f..a3a7b2442 100644
|
||
|
--- a/src/st/st-button.c
|
||
|
+++ b/src/st/st-button.c
|
||
|
@@ -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;
|
||
|
}
|
||
|
--
|
||
|
2.20.0
|
||
|
|