1From 87d285a9e186e7745d4f3a2b2e6a489b1b803b94 Mon Sep 17 00:00:00 2001
2From: Michael Natterer <mitch@gimp.org>
3Date: Fri, 22 Feb 2013 11:06:26 +0100
4Subject: [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
11diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c
12index 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--
761.7.10.2 (Apple Git-33)
77