[gtk+/wip/garnacho/gdkseat: 189/193] wayland: Unset "pointer emulating" touch on wl_touch.cancel
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/garnacho/gdkseat: 189/193] wayland: Unset "pointer emulating" touch on wl_touch.cancel
- Date: Wed, 9 Dec 2015 12:36:05 +0000 (UTC)
commit 5e829f684256d82e99192f56beb4b1643b277335
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Dec 9 12:46:08 2015 +0100
wayland: Unset "pointer emulating" touch on wl_touch.cancel
And emit the corresnponding leave event on its master pointer.
gdk/wayland/gdkdevice-wayland.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index c334e6a..48f9407 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -1768,19 +1768,28 @@ static void
touch_handle_cancel (void *data,
struct wl_touch *wl_touch)
{
- GdkWaylandDeviceData *device = data;
+ GdkWaylandSeat *wayland_seat = data;
GdkWaylandTouchData *touch;
GHashTableIter iter;
GdkEvent *event;
- g_hash_table_iter_init (&iter, device->touches);
+ if (GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch)
+ {
+ touch = GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch;
+ GDK_WAYLAND_DEVICE (wayland_seat->touch_master)->emulating_touch = NULL;
+ emulate_touch_crossing (touch->window, NULL,
+ wayland_seat->touch_master, wayland_seat->touch,
+ touch, GDK_LEAVE_NOTIFY, GDK_CROSSING_NORMAL,
+ GDK_CURRENT_TIME);
+ }
+
+ g_hash_table_iter_init (&iter, wayland_seat->touches);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch))
{
- event = _create_touch_event (device, touch, GDK_TOUCH_CANCEL,
+ event = _create_touch_event (wayland_seat, touch, GDK_TOUCH_CANCEL,
GDK_CURRENT_TIME);
- _gdk_wayland_display_deliver_event (device->display, event);
-
+ _gdk_wayland_display_deliver_event (wayland_seat->display, event);
g_hash_table_iter_remove (&iter);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]