Transfer the Mac SDK bockbuild profiles & resources inside the Mono repository.
[mono.git] / bockbuild / mac-sdk / patches / gtk / 0017-gtk-handle-gtk-primary-button-warps-slider-for-the-o.patch
1 From f2c762968b02b73323a75a723ad664ff1645abde Mon Sep 17 00:00:00 2001
2 From: Michael Natterer <mitch@gimp.org>
3 Date: Fri, 31 Aug 2012 16:24:07 +0200
4 Subject: [PATCH 17/68] gtk: handle gtk-primary-button-warps-slider for the
5  overlay scrollbars
6
7 ---
8  gtk/gtkscrolledwindow.c |   38 +++++++++++++++++++++++++++++++++-----
9  1 file changed, 33 insertions(+), 5 deletions(-)
10
11 diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
12 index 7680f5d..02745b1 100644
13 --- a/gtk/gtkscrolledwindow.c
14 +++ b/gtk/gtkscrolledwindow.c
15 @@ -2725,6 +2725,10 @@ gtk_scrolled_window_scroll_step_timeout (gpointer data)
16  }
17
18  static gboolean
19 +gtk_scrolled_window_captured_motion_notify_scrollbar (GtkWidget *widget,
20 +                                                      GdkEvent  *event);
21 +
22 +static gboolean
23  gtk_scrolled_window_captured_button_press_scrollbar (GtkWidget *widget,
24                                                       GdkEvent  *event)
25  {
26 @@ -2808,12 +2812,36 @@ gtk_scrolled_window_captured_button_press_scrollbar (GtkWidget *widget,
27        if ((priv->sb_grab_vscroll || priv->sb_grab_hscroll) &&
28            !priv->sb_drag_slider)
29          {
30 -          gtk_scrolled_window_scroll_step (scrolled_window);
31 +          gboolean primary_warps;
32 +
33 +          g_object_get (gtk_widget_get_settings (widget),
34 +                        "gtk-primary-button-warps-slider", &primary_warps,
35 +                        NULL);
36 +
37 +          if (primary_warps)
38 +            {
39 +              GdkEventMotion mevent = { 0, };
40 +
41 +              priv->sb_drag_slider = TRUE;
42 +              priv->sb_grab_offset_x = hslider_rect.width / 2;
43 +              priv->sb_grab_offset_y = vslider_rect.height / 2;
44 +
45 +              mevent.window = bevent->window;
46 +              mevent.x = bevent->x;
47 +              mevent.y = bevent->y;
48
49 -          priv->sb_scroll_timeout_id =
50 -            gdk_threads_add_timeout (SCROLL_INTERVAL_INITIAL,
51 -                                     gtk_scrolled_window_scroll_step_timeout,
52 -                                     scrolled_window);
53 +              gtk_scrolled_window_captured_motion_notify_scrollbar (widget,
54 +                                                                    (GdkEvent *) &mevent);
55 +            }
56 +          else
57 +            {
58 +              gtk_scrolled_window_scroll_step (scrolled_window);
59 +
60 +              priv->sb_scroll_timeout_id =
61 +                gdk_threads_add_timeout (SCROLL_INTERVAL_INITIAL,
62 +                                         gtk_scrolled_window_scroll_step_timeout,
63 +                                         scrolled_window);
64 +            }
65          }
66
67        return TRUE;
68 --
69 1.7.10.2 (Apple Git-33)