[gtk+] widget: Ensure all gestures outside a grab scope are cancelled
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] widget: Ensure all gestures outside a grab scope are cancelled
- Date: Tue, 3 Jun 2014 14:50:19 +0000 (UTC)
commit 25f5da5018e80c835d47be791e5132661808c5bc
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Jun 3 15:04:25 2014 +0200
widget: Ensure all gestures outside a grab scope are cancelled
This code is a product of early stages in the gestures branch, where
capturing would have an effect outside grab boundaries. But this isn't
really the case, so every gesture outside the grab scope must be reset
to avoid keeping stale data.
gtk/gtkwidget.c | 35 +++++------------------------------
1 files changed, 5 insertions(+), 30 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 8b90c3c..2aa5acc 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -16887,40 +16887,15 @@ event_controller_grab_notify (GtkWidget *widget,
gboolean was_grabbed,
EventControllerData *data)
{
- GtkWidget *grab_widget, *toplevel;
- GtkPropagationPhase phase;
- GtkWindowGroup *group;
- GdkDevice *device;
-
- device = gtk_gesture_get_device (GTK_GESTURE (data->controller));
- phase = gtk_event_controller_get_propagation_phase (data->controller);
-
- if (!device)
- return;
-
- toplevel = gtk_widget_get_toplevel (widget);
-
- if (GTK_IS_WINDOW (toplevel))
- group = gtk_window_get_group (GTK_WINDOW (toplevel));
- else
- group = gtk_window_get_group (NULL);
+ GdkDevice *device = NULL;
- grab_widget = gtk_window_group_get_current_device_grab (group, device);
-
- if (!grab_widget)
- grab_widget = gtk_window_group_get_current_grab (group);
+ if (GTK_IS_GESTURE (data->controller))
+ device = gtk_gesture_get_device (GTK_GESTURE (data->controller));
- if (!grab_widget || grab_widget == widget)
+ if (!device || !gtk_widget_device_is_shadowed (widget, device))
return;
- if ((phase != GTK_PHASE_CAPTURE &&
- !gtk_widget_is_ancestor (widget, grab_widget)) ||
- (phase == GTK_PHASE_CAPTURE &&
- !gtk_widget_is_ancestor (widget, grab_widget) &&
- !gtk_widget_is_ancestor (grab_widget, widget)))
- {
- gtk_event_controller_reset (data->controller);
- }
+ gtk_event_controller_reset (data->controller);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]