summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-12-09 12:39:43 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-12-15 00:40:21 +0100
commitfc19a999ec156f7f746c7928f1828f40a01c5b90 (patch)
tree186d6c36e1b784245011f929c0145b21962ea75a
parent09947a63ed563777d2655d1833cca56798583809 (diff)
downloadgtk+-fc19a999ec156f7f746c7928f1828f40a01c5b90.tar.gz
gdk: Manage GDK_TOUCH_CANCEL events on gdk_windowing_got_event()
These events must get active/implicit grabs undone, and can be done on client-side code. https://bugzilla.gnome.org/show_bug.cgi?id=759309
-rw-r--r--gdk/gdkwindow.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index bd32ad12c7..6f9aae803f 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -9579,7 +9579,8 @@ _gdk_windowing_got_event (GdkDisplay *display,
goto out;
}
- if (!(is_button_type (event->type) ||
+ if (!(event->type == GDK_TOUCH_CANCEL ||
+ is_button_type (event->type) ||
is_motion_type (event->type) ||
is_gesture_type (event->type)) ||
event_window->window_type == GDK_WINDOW_ROOT)
@@ -9684,13 +9685,14 @@ _gdk_windowing_got_event (GdkDisplay *display,
unlink_event = proxy_gesture_event (event, serial);
if ((event->type == GDK_BUTTON_RELEASE ||
+ event->type == GDK_TOUCH_CANCEL ||
event->type == GDK_TOUCH_END) &&
!event->any.send_event)
{
GdkEventSequence *sequence;
sequence = gdk_event_get_event_sequence (event);
- if (event->type == GDK_TOUCH_END && sequence)
+ if (sequence)
{
_gdk_display_end_touch_grab (display, device, sequence);
}