summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Mikhaylenko <alexm@gnome.org>2022-11-02 23:34:32 +0400
committerAlexander Mikhaylenko <alexm@gnome.org>2022-11-02 23:34:32 +0400
commitf6ae598f42dbde75fae7f44b14a3cf58f1f77677 (patch)
treefb82d7db4b35cfeaf445ad6f8c1e649337e89622
parent30f9fdd70fe1d2293dbfe3fccf8196fad1cc42c6 (diff)
downloadepiphany-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.c20
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) {