[gtk+/wip/garnacho/gdkseat: 66/74] gdk: Manage GDK_TOUCH_CANCEL events on gdk_windowing_got_event()



commit 93974e427c35414d4d3d9bbd3cb4361204da0361
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Dec 9 12:39:43 2015 +0100

    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

 gdk/gdkwindow.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index bd32ad1..6f9aae8 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);
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]