1 From d35ff9d66c8d76d509819dabc7b97972b76d7438 Mon Sep 17 00:00:00 2001
2 From: Kristian Rietveld <kris@lanedo.com>
3 Date: Mon, 8 Oct 2012 11:48:38 +0200
4 Subject: [PATCH 27/68] Refrain from starting fading out while a gesture is in
8 gtk/gtkscrolledwindow.c | 20 ++++++++++++++++----
9 1 file changed, 16 insertions(+), 4 deletions(-)
11 diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
12 index 1fba87b..a04436b 100644
13 --- a/gtk/gtkscrolledwindow.c
14 +++ b/gtk/gtkscrolledwindow.c
15 @@ -153,6 +153,7 @@ typedef struct {
17 gboolean overlay_scrollbars;
18 gboolean is_snapping_back;
19 + gboolean gesture_in_progress;
20 } GtkScrolledWindowPrivate;
22 #define GTK_SCROLLED_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_SCROLLED_WINDOW, GtkScrolledWindowPrivate))
23 @@ -2151,7 +2152,10 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
24 * FIXME: check if overshoot has really ended.
26 if (event->phase == GDK_EVENT_SCROLL_PHASE_START)
27 - priv->is_snapping_back = FALSE;
29 + priv->is_snapping_back = FALSE;
30 + priv->gesture_in_progress = TRUE;
33 if (is_momentum_event && !is_overshot)
34 gtk_scrolled_window_calculate_velocity (scrolled_window, (GdkEvent *)event);
35 @@ -2291,13 +2295,20 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
36 /* Reset force if gesture has ended. */
37 if (event->phase == GDK_EVENT_SCROLL_PHASE_END)
39 + priv->gesture_in_progress = FALSE;
45 - /* Stop fade out timeout while we're overshot */
46 - if (new_overshoot_x != 0 || new_overshoot_y != 0)
47 + /* Stop fade out timeout while we're overshot or while
48 + * a gesture is in progress.
50 + if (new_overshoot_x != 0 || new_overshoot_y != 0 ||
51 + priv->gesture_in_progress)
52 gtk_scrolled_window_stop_fade_out_timeout (scrolled_window);
54 + gtk_scrolled_window_start_fade_out_timeout (scrolled_window);
56 /* If we should start a snap back and no current deceleration
57 * is active, start the snap back.
58 @@ -3598,7 +3609,8 @@ gtk_scrolled_window_start_fade_in_animation (GtkScrolledWindow *scrolled_window)
59 g_object_add_weak_pointer (G_OBJECT (priv->opacity_anim),
60 (gpointer *) &priv->opacity_anim);
62 - gtk_scrolled_window_start_fade_out_timeout (scrolled_window);
63 + if (!priv->gesture_in_progress)
64 + gtk_scrolled_window_start_fade_out_timeout (scrolled_window);
69 1.7.10.2 (Apple Git-33)