[gtk: 9/15] scrolledwindow: Stop kinetic scrolling on begin
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 9/15] scrolledwindow: Stop kinetic scrolling on begin
- Date: Wed, 26 Jan 2022 23:37:29 +0000 (UTC)
commit 44b0d8b3307704d026bfdc649eaf5e68e1507e50
Author: José Expósito <jose exposito89 gmail com>
Date: Wed Jun 23 08:09:35 2021 +0200
scrolledwindow: Stop kinetic scrolling on begin
Stop kinetic scrolling when a scroll begin signal is sent during the
event capture phase.
Part-of: <!3454>
gtk/gtkscrolledwindow.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 372afe4a95..49be97080c 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1350,6 +1350,19 @@ scroll_controller_scroll_begin (GtkEventControllerScroll *scroll,
priv->smooth_scroll = TRUE;
}
+static void
+stop_kinetic_scrolling_cb (GtkEventControllerScroll *scroll,
+ GtkScrolledWindow *scrolled_window)
+{
+ GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
+
+ if (priv->hscrolling)
+ gtk_kinetic_scrolling_stop (priv->hscrolling);
+
+ if (priv->vscrolling)
+ gtk_kinetic_scrolling_stop (priv->vscrolling);
+}
+
static void
scrolled_window_scroll (GtkScrolledWindow *scrolled_window,
double delta_x,
@@ -2115,6 +2128,8 @@ gtk_scrolled_window_init (GtkScrolledWindow *scrolled_window)
controller = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES |
GTK_EVENT_CONTROLLER_SCROLL_KINETIC);
gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
+ g_signal_connect (controller, "scroll-begin",
+ G_CALLBACK (stop_kinetic_scrolling_cb), scrolled_window);
g_signal_connect (controller, "scroll",
G_CALLBACK (captured_scroll_cb), scrolled_window);
g_signal_connect (controller, "decelerate",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]