diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-03-10 16:38:17 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-03-10 16:48:16 +0100 |
commit | 622a930c5a55aa64489a8031cd507f45e7fa2545 (patch) | |
tree | 987b380f4c7348e5a9a369ee73e05aaf7a7160e1 | |
parent | 2f8938cf23b1b2f5904fb969ca993e4b6a9828ef (diff) | |
download | gtk+-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.c | 7 |
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)); } } |