summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-04-17 21:19:58 +0100
committerMatthias Clasen <mclasen@redhat.com>2016-04-19 10:37:34 -0400
commit32397f0b72df71735179273aabd76e2752bd1148 (patch)
tree7f1be1b1228858e7c34ded3dd38f166c3da361f8
parent6e00717079505fd671d69befbfd75ce2a640b28d (diff)
downloadgtk+-32397f0b72df71735179273aabd76e2752bd1148.tar.gz
gdk: Make GDK_TOUCH_CANCEL be dealt with similarly to GDK_TOUCH_END
We must emit the cancel event with the same semantics, and towards the GdkWindow that is currently under the touchpoint, so make proxy_button_event() deal with GDK_TOUCH_CANCEL. Fixes the GDK_TOUCH_CANCEL event being emitted only on the toplevel, which is usually non-sufficient.
-rw-r--r--gdk/gdkwindow.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 60ed2ee586..66ebb9de36 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -7663,6 +7663,7 @@ is_button_type (GdkEventType type)
type == GDK_BUTTON_RELEASE ||
type == GDK_TOUCH_BEGIN ||
type == GDK_TOUCH_END ||
+ type == GDK_TOUCH_CANCEL ||
type == GDK_SCROLL;
}
@@ -9286,6 +9287,7 @@ proxy_button_event (GdkEvent *source_event,
case GDK_TOUCH_BEGIN:
case GDK_TOUCH_END:
+ case GDK_TOUCH_CANCEL:
convert_toplevel_coords_to_window (event_win,
toplevel_x, toplevel_y,
&event->button.x, &event->button.y);
@@ -9301,7 +9303,7 @@ proxy_button_event (GdkEvent *source_event,
gdk_event_set_source_device (event, source_device);
- if ((type == GDK_TOUCH_END &&
+ if (((type == GDK_TOUCH_END || type == GDK_TOUCH_CANCEL) &&
_gdk_event_get_pointer_emulated (source_event)) &&
pointer_window == pointer_info->window_under_pointer &&
gdk_device_get_source (source_device) == GDK_SOURCE_TOUCHSCREEN)