diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c index ad003d9..483f105 100644 --- a/gtk/gtknsview.c +++ b/gtk/gtknsview.c @@ -41,7 +41,8 @@ enum { PROP_0, - PROP_VIEW + PROP_VIEW, + PROP_ENABLE_SWIZZLE }; @@ -49,6 +50,7 @@ struct _GtkNSViewPrivate { NSView *view; guint map_timeout; + gboolean enable_swizzle; }; #define GTK_NS_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \ @@ -130,6 +132,14 @@ gtk_ns_view_class_init (GtkNSViewClass *klass) P_("The NSView"), GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_ENABLE_SWIZZLE, + g_param_spec_boolean ("enable-swizzle", + P_("Enable swizzle"), + P_("Enable swizzle"), + FALSE, + GTK_PARAM_READWRITE)); } static void @@ -149,12 +159,18 @@ static void gtk_ns_view_swizzle_draw_rect_recursive (NSView *view, - (void) myDidAddSubview: (NSView *) aView { void *associated_object; + GtkNSView *gtknsview; associated_object = objc_getAssociatedObject (self, "gtknsview"); if (associated_object) { - gtk_ns_view_swizzle_draw_rect_recursive (aView, "gtknsview", associated_object); + gtknsview = (GtkNSView *)associated_object; + + if (gtknsview->priv->enable_swizzle) + { + gtk_ns_view_swizzle_draw_rect_recursive (aView, "gtknsview", associated_object); + } } else { @@ -443,8 +459,11 @@ gtk_ns_view_constructed (GObject *object) #endif gtk_ns_view_replace_draw_insertion_point (); - gtk_ns_view_swizzle_draw_rect_recursive (ns_view->priv->view, - "gtknsview", ns_view); + if (ns_view->priv->enable_swizzle) + { + gtk_ns_view_swizzle_draw_rect_recursive (ns_view->priv->view, + "gtknsview", ns_view); + } } static void @@ -477,6 +496,10 @@ gtk_ns_view_set_property (GObject *object, [ns_view->priv->view retain]; break; + case PROP_ENABLE_SWIZZLE: + ns_view->priv->enable_swizzle = g_value_get_boolean (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -497,6 +520,9 @@ gtk_ns_view_get_property (GObject *object, g_value_set_pointer (value, ns_view->priv->view); break; + case PROP_ENABLE_SWIZZLE: + g_value_set_boolean (value, ns_view->priv->enable_swizzle); + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -617,7 +643,7 @@ really_map (GtkWidget *widget) { NSText *text = [window fieldEditor: YES forObject: nil]; - if (text) + if (text && ns_view->priv->enable_swizzle) { gtk_ns_view_swizzle_draw_rect_recursive (text, "gtkwindow", toplevel); }