summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-03-10 16:38:17 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-03-10 16:48:16 +0100
commit622a930c5a55aa64489a8031cd507f45e7fa2545 (patch)
tree987b380f4c7348e5a9a369ee73e05aaf7a7160e1
parent2f8938cf23b1b2f5904fb969ca993e4b6a9828ef (diff)
downloadgtk+-622a930c5a55aa64489a8031cd507f45e7fa2545.tar.gz
window: reset both press/drag gestures when move/resize drag starts
Now that this is split in two separate gestures, both must be reset when the WM grabs the pointer. Also, do on resize drags like on move drags, and claim the gesture before resetting, so the ownership is properly transferred across any other widgets. https://bugzilla.gnome.org/show_bug.cgi?id=745969
-rw-r--r--gtk/gtkwindow.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 7dee0dfc41..1cac7b39c1 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1487,6 +1487,8 @@ multipress_gesture_pressed_cb (GtkGestureMultiPress *gesture,
{
gdouble x_root, y_root;
+ gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
+
gdk_event_get_root_coords (event, &x_root, &y_root);
gdk_window_begin_resize_drag_for_device (gtk_widget_get_window (widget),
(GdkWindowEdge) region,
@@ -1494,6 +1496,9 @@ multipress_gesture_pressed_cb (GtkGestureMultiPress *gesture,
GDK_BUTTON_PRIMARY,
x_root, y_root,
gdk_event_get_time (event));
+
+ gtk_event_controller_reset (GTK_EVENT_CONTROLLER (gesture));
+ gtk_event_controller_reset (GTK_EVENT_CONTROLLER (priv->drag_gesture));
}
break;
@@ -1528,6 +1533,7 @@ drag_gesture_update_cb (GtkGestureDrag *gesture,
gdouble offset_y,
GtkWindow *window)
{
+ GtkWindowPrivate *priv = window->priv;
gint double_click_distance;
GtkSettings *settings;
@@ -1579,6 +1585,7 @@ drag_gesture_update_cb (GtkGestureDrag *gesture,
gtk_get_current_event_time ());
gtk_event_controller_reset (GTK_EVENT_CONTROLLER (gesture));
+ gtk_event_controller_reset (GTK_EVENT_CONTROLLER (priv->multipress_gesture));
}
}