summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-09-15 19:12:10 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-09-15 21:07:19 +0200
commit206f4334bee7d416c02d14371312ff85bcded72b (patch)
treec3e5cdd78afbebc8db1be3616fb75107f61778f9
parent32de3372cea1457e09ea1ec80d888433aea61143 (diff)
downloadgtk+-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.c100
-rw-r--r--gdk/gdkdisplayprivate.h29
-rw-r--r--gdk/gdkwindow.c8
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))
{