diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-09-15 19:12:10 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-09-15 21:07:19 +0200 |
commit | 206f4334bee7d416c02d14371312ff85bcded72b (patch) | |
tree | c3e5cdd78afbebc8db1be3616fb75107f61778f9 | |
parent | 32de3372cea1457e09ea1ec80d888433aea61143 (diff) | |
download | gtk+-206f4334bee7d416c02d14371312ff85bcded72b.tar.gz |
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.
-rw-r--r-- | gdk/gdkdisplay.c | 100 | ||||
-rw-r--r-- | gdk/gdkdisplayprivate.h | 29 | ||||
-rw-r--r-- | gdk/gdkwindow.c | 8 |
3 files changed, 0 insertions, 137 deletions
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index b0d30b57dc..0092c85452 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 fe6ea0f001..fb5c1f554f 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 16176762b0..785b3d0a35 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)) { |