diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-04-17 21:19:58 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-04-19 10:37:34 -0400 |
commit | 32397f0b72df71735179273aabd76e2752bd1148 (patch) | |
tree | 7f1be1b1228858e7c34ded3dd38f166c3da361f8 | |
parent | 6e00717079505fd671d69befbfd75ce2a640b28d (diff) | |
download | gtk+-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.c | 4 |
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) |