651e32a4fc4a2b9512adda6507d8c8ff760b4b29
[mono.git] / bockbuild / mac-sdk / patches / gtk / 0042-gtk-connect-GtkNSView-to-move-native-children-and-re.patch
1 From 87d285a9e186e7745d4f3a2b2e6a489b1b803b94 Mon Sep 17 00:00:00 2001
2 From: Michael Natterer <mitch@gimp.org>
3 Date: Fri, 22 Feb 2013 11:06:26 +0100
4 Subject: [PATCH 42/68] gtk: connect GtkNSView to "move-native-children" and
5  reposition
6
7 ---
8  gtk/gtknsview.c |   32 ++++++++++++++++++++++++++------
9  1 file changed, 26 insertions(+), 6 deletions(-)
10
11 diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c
12 index 40c6a9b..a19a94e 100644
13 --- a/gtk/gtknsview.c
14 +++ b/gtk/gtknsview.c
15 @@ -77,12 +77,14 @@ static gboolean   gtk_ns_view_key_press     (GtkWidget      *widget,
16  static gboolean   gtk_ns_view_key_release   (GtkWidget      *widget,
17                                               GdkEventKey    *event);
18
19 -static void       gtk_ns_view_native_child_event (GdkWindow     *window,
20 -                                                  NSView        *view,
21 -                                                  NSEvent       *event,
22 -                                                  GtkNSView     *ns_view);
23 -static gboolean   gtk_ns_view_forward_event      (GtkWidget     *widget,
24 -                                                  GdkEventKey   *event);
25 +static void       gtk_ns_view_native_child_event   (GdkWindow     *window,
26 +                                                    NSView        *view,
27 +                                                    NSEvent       *event,
28 +                                                    GtkNSView     *ns_view);
29 +static void       gtk_ns_view_move_native_children (GdkWindow     *window,
30 +                                                    GtkNSView     *ns_view);
31 +static gboolean   gtk_ns_view_forward_event        (GtkWidget     *widget,
32 +                                                    GdkEventKey   *event);
33
34
35  G_DEFINE_TYPE (GtkNSView, gtk_ns_view, GTK_TYPE_WIDGET)
36 @@ -287,6 +289,10 @@ gtk_ns_view_map (GtkWidget *widget)
37                             G_CALLBACK (gtk_ns_view_native_child_event),
38                             G_OBJECT (widget), 0);
39
40 +  g_signal_connect_object (gtk_widget_get_window (widget), "move-native-children",
41 +                           G_CALLBACK (gtk_ns_view_move_native_children),
42 +                           G_OBJECT (widget), 0);
43 +
44    GTK_WIDGET_CLASS (gtk_ns_view_parent_class)->map (widget);
45  }
46
47 @@ -296,6 +302,10 @@ gtk_ns_view_unmap (GtkWidget *widget)
48    GtkNSView *ns_view = GTK_NS_VIEW (widget);
49    GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
50
51 +  g_signal_handlers_disconnect_by_func (gtk_widget_get_window (widget),
52 +                                        gtk_ns_view_move_native_children,
53 +                                        widget);
54 +
55    g_signal_handlers_disconnect_by_func (gtk_widget_get_window (toplevel),
56                                          gtk_ns_view_native_child_event,
57                                          widget);
58 @@ -412,6 +422,16 @@ gtk_ns_view_native_child_event (GdkWindow *window,
59      }
60  }
61
62 +static void
63 +gtk_ns_view_move_native_children (GdkWindow *window,
64 +                                  GtkNSView *ns_view)
65 +{
66 +  GtkAllocation allocation;
67 +
68 +  gtk_widget_get_allocation (GTK_WIDGET (ns_view), &allocation);
69 +  gtk_ns_view_position_view (ns_view, &allocation);
70 +}
71 +
72  static gboolean
73  gtk_ns_view_forward_event (GtkWidget   *widget,
74                             GdkEventKey *event)
75 --
76 1.7.10.2 (Apple Git-33)