summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdk/wayland/gdkdevice-wayland.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index d02f5804d7..296dd3c87a 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -1054,26 +1054,31 @@ flush_scroll_event (GdkWaylandSeat *seat,
direction = GDK_SCROLL_DOWN;
flush_discrete_scroll_event (seat, direction);
+ pointer_frame->discrete_x = 0;
+ pointer_frame->discrete_y = 0;
}
- /* Axes can stop independently, if we stop on one axis but have a
- * delta on the other, we don't count it as a stop event.
- */
- if (pointer_frame->is_scroll_stop &&
- pointer_frame->delta_x == 0 &&
- pointer_frame->delta_y == 0)
- is_stop = TRUE;
-
- flush_smooth_scroll_event (seat,
- pointer_frame->delta_x,
- pointer_frame->delta_y,
- is_stop);
-
- pointer_frame->delta_x = 0;
- pointer_frame->delta_y = 0;
- pointer_frame->discrete_x = 0;
- pointer_frame->discrete_y = 0;
- pointer_frame->is_scroll_stop = FALSE;
+ if (pointer_frame->is_scroll_stop ||
+ pointer_frame->delta_x != 0 ||
+ pointer_frame->delta_y != 0)
+ {
+ /* Axes can stop independently, if we stop on one axis but have a
+ * delta on the other, we don't count it as a stop event.
+ */
+ if (pointer_frame->is_scroll_stop &&
+ pointer_frame->delta_x == 0 &&
+ pointer_frame->delta_y == 0)
+ is_stop = TRUE;
+
+ flush_smooth_scroll_event (seat,
+ pointer_frame->delta_x,
+ pointer_frame->delta_y,
+ is_stop);
+
+ pointer_frame->delta_x = 0;
+ pointer_frame->delta_y = 0;
+ pointer_frame->is_scroll_stop = FALSE;
+ }
}
static void