1 diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c
2 index 31c4970..ad003d9 100644
6 struct _GtkNSViewPrivate
12 #define GTK_NS_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
13 @@ -563,6 +564,15 @@ gtk_ns_view_position_view (GtkNSView *ns_view,
15 gtk_ns_view_unrealize (GtkWidget *widget)
17 + GtkNSView *ns_view = GTK_NS_VIEW (widget);
19 + if (ns_view->priv->map_timeout != 0)
21 + g_source_remove (ns_view->priv->map_timeout);
22 + ns_view->priv->map_timeout = 0;
23 + g_object_unref (widget);
26 if (gtk_widget_get_mapped (widget))
27 gtk_widget_unmap (widget);
29 @@ -577,6 +587,8 @@ really_map (GtkWidget *widget) {
33 + g_object_unref (widget);
35 if (gtk_widget_get_mapped (widget))
38 @@ -611,13 +623,18 @@ really_map (GtkWidget *widget) {
42 + ns_view->priv->map_timeout = 0;
48 gtk_ns_view_map (GtkWidget *widget)
50 - g_timeout_add (50, (GSourceFunc)really_map, widget);
51 + GtkNSView *ns_view = GTK_NS_VIEW (widget);
53 + g_object_ref (widget);
54 + ns_view->priv->map_timeout = g_timeout_add (50, (GSourceFunc)really_map, widget);