diff options
author | Alexander Mikhaylenko <alexm@gnome.org> | 2022-11-02 23:34:32 +0400 |
---|---|---|
committer | Alexander Mikhaylenko <alexm@gnome.org> | 2022-11-02 23:34:32 +0400 |
commit | f6ae598f42dbde75fae7f44b14a3cf58f1f77677 (patch) | |
tree | fb82d7db4b35cfeaf445ad6f8c1e649337e89622 | |
parent | 30f9fdd70fe1d2293dbfe3fccf8196fad1cc42c6 (diff) | |
download | epiphany-wip/exalm/gesture.tar.gz |
mouse-gesture-controller: Fix sequence claimingwip/exalm/gesture
Claim it on drag-update instead of drag-end. Remove gesture_active as GTK
already tracks that.
-rw-r--r-- | src/ephy-mouse-gesture-controller.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/ephy-mouse-gesture-controller.c b/src/ephy-mouse-gesture-controller.c index c0b96e24d..e25481594 100644 --- a/src/ephy-mouse-gesture-controller.c +++ b/src/ephy-mouse-gesture-controller.c @@ -51,7 +51,6 @@ struct _EphyMouseGestureController { gint sequence_pos; gdouble last_x; gdouble last_y; - gboolean gesture_active; }; enum { @@ -71,7 +70,8 @@ ephy_mouse_gesture_controller_reset (EphyMouseGestureController *self) self->sequence_pos = 0; self->last_x = 0; self->last_y = 0; - self->gesture_active = FALSE; + + gtk_event_controller_reset (GTK_EVENT_CONTROLLER (self->gesture)); } static void @@ -107,18 +107,23 @@ drag_update_cb (GtkGestureDrag *gesture, MouseDirection direction; double delta_x = offset_x - self->last_x; double delta_y = offset_y - self->last_y; + GdkEventSequence *sequence; self->last_x = offset_x; self->last_y = offset_y; - if (!self->gesture_active && + sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); + + if (gtk_gesture_get_sequence_state (GTK_GESTURE (gesture), sequence) != GTK_EVENT_SEQUENCE_CLAIMED && gtk_drag_check_threshold (GTK_WIDGET (self->window), 0, 0, offset_x, offset_y)) { - self->gesture_active = TRUE; + gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); } - if (!self->gesture_active || self->sequence_pos == NUM_SEQUENCES) + if (gtk_gesture_get_sequence_state (GTK_GESTURE (gesture), sequence) != GTK_EVENT_SEQUENCE_CLAIMED || + self->sequence_pos == NUM_SEQUENCES) { return; + } /* Try to guess direction */ if (fabs (delta_x) > fabs (delta_y) * 2) { @@ -154,11 +159,6 @@ drag_end_cb (GtkGestureDrag *gesture, GActionGroup *action_group_tab = ephy_window_get_action_group (self->window, "tab"); GAction *action; - if (!self->gesture_active) - return; - - gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); - switch (self->sequence_pos) { case 1: if (self->sequence[0] == MOUSE_DIRECTION_LEFT) { |