7aa5471e9401bd1d501f6c10f31d87d843928bcf
[mono.git] / bockbuild / mac-sdk / patches / gtk / 0027-Refrain-from-starting-fading-out-while-a-gesture-is-.patch
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
5  progress
6
7 ---
8  gtk/gtkscrolledwindow.c |   20 ++++++++++++++++----
9  1 file changed, 16 insertions(+), 4 deletions(-)
10
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 {
16
17    gboolean       overlay_scrollbars;
18    gboolean       is_snapping_back;
19 +  gboolean       gesture_in_progress;
20  } GtkScrolledWindowPrivate;
21
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.
25         */
26        if (event->phase == GDK_EVENT_SCROLL_PHASE_START)
27 -        priv->is_snapping_back = FALSE;
28 +        {
29 +          priv->is_snapping_back = FALSE;
30 +          priv->gesture_in_progress = TRUE;
31 +        }
32
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)
38           {
39 +           priv->gesture_in_progress = FALSE;
40 +
41             priv->x_force = 0.0;
42             priv->y_force = 0.0;
43           }
44
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.
49 +        */
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);
53 +       else
54 +         gtk_scrolled_window_start_fade_out_timeout (scrolled_window);
55
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);
61
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);
65  }
66
67  static void
68 --
69 1.7.10.2 (Apple Git-33)