[gtk+] gdk: Remove implicit touch grab accounting



commit 0317b0d18d34f3867c061d83b033265ec68ed0c9
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Sep 15 19:12:10 2017 +0200

    gdk: Remove implicit touch grab accounting
    
    This is not necessary now that there's no client-side windows to track.
    The only removed piece that could make sense is emission of grab broken
    events, but it's already an stretch since the semantics of those with
    multi-touchpoint is unclear.
    
    Anyhow, This should be fixed at the GTK level, while we let GDK deal with
    seat/device level grabs.

 gdk/gdkdisplay.c        |  100 -----------------------------------------------
 gdk/gdkdisplayprivate.h |   29 --------------
 gdk/gdkwindow.c         |    8 ----
 3 files changed, 0 insertions(+), 137 deletions(-)
---
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index b0d30b5..0092c85 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -377,7 +377,6 @@ gdk_display_init (GdkDisplay *display)
   display->double_click_time = 250;
   display->double_click_distance = 5;
 
-  display->touch_implicit_grabs = g_array_new (FALSE, FALSE, sizeof (GdkTouchGrabInfo));
   display->device_grabs = g_hash_table_new (NULL, NULL);
 
   display->pointers_info = g_hash_table_new_full (NULL, NULL, NULL,
@@ -429,8 +428,6 @@ gdk_display_finalize (GObject *object)
                                NULL);
   g_hash_table_destroy (display->device_grabs);
 
-  g_array_free (display->touch_implicit_grabs, TRUE);
-
   g_hash_table_destroy (display->pointers_info);
 
   g_list_free_full (display->input_devices, g_object_unref);
@@ -707,73 +704,6 @@ _gdk_display_add_device_grab (GdkDisplay       *display,
   return info;
 }
 
-static void
-_gdk_display_break_touch_grabs (GdkDisplay *display,
-                                GdkDevice  *device,
-                                GdkWindow  *new_grab_window)
-{
-  guint i;
-
-  for (i = 0; i < display->touch_implicit_grabs->len; i++)
-    {
-      GdkTouchGrabInfo *info;
-
-      info = &g_array_index (display->touch_implicit_grabs,
-                             GdkTouchGrabInfo, i);
-
-      if (info->device == device && info->window != new_grab_window)
-        generate_grab_broken_event (display, GDK_WINDOW (info->window),
-                                    device, TRUE, new_grab_window);
-    }
-}
-
-void
-_gdk_display_add_touch_grab (GdkDisplay       *display,
-                             GdkDevice        *device,
-                             GdkEventSequence *sequence,
-                             GdkWindow        *window,
-                             GdkWindow        *native_window,
-                             GdkEventMask      event_mask,
-                             unsigned long     serial,
-                             guint32           time)
-{
-  GdkTouchGrabInfo info;
-
-  info.device = device;
-  info.sequence = sequence;
-  info.window = g_object_ref (window);
-  info.native_window = g_object_ref (native_window);
-  info.serial = serial;
-  info.event_mask = event_mask;
-  info.time = time;
-
-  g_array_append_val (display->touch_implicit_grabs, info);
-}
-
-gboolean
-_gdk_display_end_touch_grab (GdkDisplay       *display,
-                             GdkDevice        *device,
-                             GdkEventSequence *sequence)
-{
-  guint i;
-
-  for (i = 0; i < display->touch_implicit_grabs->len; i++)
-    {
-      GdkTouchGrabInfo *info;
-
-      info = &g_array_index (display->touch_implicit_grabs,
-                             GdkTouchGrabInfo, i);
-
-      if (info->device == device && info->sequence == sequence)
-        {
-          g_array_remove_index_fast (display->touch_implicit_grabs, i);
-          return TRUE;
-        }
-    }
-
-  return FALSE;
-}
-
 static GdkWindow *
 get_current_toplevel (GdkDisplay      *display,
                       GdkDevice       *device,
@@ -948,9 +878,6 @@ _gdk_display_device_grab_update (GdkDisplay *display,
            next_grab = NULL; /* Actually its not yet active */
        }
 
-      if (next_grab)
-        _gdk_display_break_touch_grabs (display, device, next_grab->window);
-
       if ((next_grab == NULL && current_grab->implicit_ungrab) ||
           (next_grab != NULL && current_grab->window != next_grab->window))
         generate_grab_broken_event (display, GDK_WINDOW (current_grab->window),
@@ -1015,33 +942,6 @@ _gdk_display_has_device_grab (GdkDisplay *display,
   return NULL;
 }
 
-GdkTouchGrabInfo *
-_gdk_display_has_touch_grab (GdkDisplay       *display,
-                             GdkDevice        *device,
-                             GdkEventSequence *sequence,
-                             gulong            serial)
-{
-  guint i;
-
-  for (i = 0; i < display->touch_implicit_grabs->len; i++)
-    {
-      GdkTouchGrabInfo *info;
-
-      info = &g_array_index (display->touch_implicit_grabs,
-                             GdkTouchGrabInfo, i);
-
-      if (info->device == device && info->sequence == sequence)
-        {
-          if (serial >= info->serial)
-            return info;
-          else
-            return NULL;
-        }
-    }
-
-  return NULL;
-}
-
 /* Returns true if last grab was ended
  * If if_child is non-NULL, end the grab only if the grabbed
  * window is the same as if_child or a descendant of it */
diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h
index fe6ea0f..fb5c1f5 100644
--- a/gdk/gdkdisplayprivate.h
+++ b/gdk/gdkdisplayprivate.h
@@ -54,19 +54,6 @@ typedef struct
   guint implicit : 1;
 } GdkDeviceGrabInfo;
 
-/* Tracks information about a touch implicit grab on this display */
-typedef struct
-{
-  GdkDevice *device;
-  GdkEventSequence *sequence;
-
-  GdkWindow *window;
-  GdkWindow *native_window;
-  gulong serial;
-  guint event_mask;
-  guint32 time;
-} GdkTouchGrabInfo;
-
 /* Tracks information about which window and position the pointer last was in.
  * This is useful when we need to synthesize events later.
  * Note that we track toplevel_under_pointer using enter/leave events,
@@ -97,7 +84,6 @@ struct _GdkDisplay
 
   guint closed             : 1;  /* Whether this display has been closed */
 
-  GArray *touch_implicit_grabs;
   GHashTable *device_grabs;
   GdkDeviceManager *device_manager;
   GList *input_devices; /* Deprecated, only used to keep gdk_display_list_devices working */
@@ -282,21 +268,6 @@ gboolean            _gdk_display_end_device_grab      (GdkDisplay       *display
 gboolean            _gdk_display_check_grab_ownership (GdkDisplay       *display,
                                                        GdkDevice        *device,
                                                        gulong            serial);
-void                _gdk_display_add_touch_grab       (GdkDisplay       *display,
-                                                       GdkDevice        *device,
-                                                       GdkEventSequence *sequence,
-                                                       GdkWindow        *window,
-                                                       GdkWindow        *native_window,
-                                                       GdkEventMask      event_mask,
-                                                       unsigned long     serial_start,
-                                                       guint32           time);
-GdkTouchGrabInfo *  _gdk_display_has_touch_grab       (GdkDisplay       *display,
-                                                       GdkDevice        *device,
-                                                       GdkEventSequence *sequence,
-                                                       gulong            serial);
-gboolean            _gdk_display_end_touch_grab       (GdkDisplay       *display,
-                                                       GdkDevice        *device,
-                                                       GdkEventSequence *sequence);
 GdkPointerWindowInfo * _gdk_display_get_pointer_info  (GdkDisplay       *display,
                                                        GdkDevice        *device);
 void                _gdk_display_pointer_info_foreach (GdkDisplay       *display,
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 3daf7d6..eb84837 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -6050,14 +6050,6 @@ _gdk_windowing_got_event (GdkDisplay *display,
        event->type == GDK_TOUCH_END) &&
       !event->any.send_event)
     {
-      GdkEventSequence *sequence;
-
-      sequence = gdk_event_get_event_sequence (event);
-      if (sequence)
-        {
-          _gdk_display_end_touch_grab (display, device, sequence);
-        }
-
       if (event->type == GDK_BUTTON_RELEASE ||
           gdk_event_get_pointer_emulated (event))
         {


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