--- xfdesktop4-4.9.2.orig/src/xfce-desktop.c +++ xfdesktop4-4.9.2/src/xfce-desktop.c @@ -233,7 +233,7 @@ xfce_desktop_setup_icon_view(XfceDesktop if(manager) { xfce_desktop_ensure_system_font_size(desktop); - desktop->priv->icon_view = xfdesktop_icon_view_new(manager); + desktop->priv->icon_view = xfdesktop_icon_view_new(manager, desktop->priv->channel); xfdesktop_icon_view_set_font_size(XFDESKTOP_ICON_VIEW(desktop->priv->icon_view), (!desktop->priv->icons_font_size_set || !desktop->priv->icons_font_size) --- xfdesktop4-4.9.2.orig/src/xfdesktop-icon-view.h +++ xfdesktop4-4.9.2/src/xfdesktop-icon-view.h @@ -26,6 +26,8 @@ #include "xfdesktop-icon.h" #include "xfdesktop-icon-view-manager.h" +#include + G_BEGIN_DECLS #define XFDESKTOP_TYPE_ICON_VIEW (xfdesktop_icon_view_get_type()) @@ -70,7 +72,8 @@ struct _XfdesktopIconViewClass GType xfdesktop_icon_view_get_type(void) G_GNUC_CONST; -GtkWidget *xfdesktop_icon_view_new(XfdesktopIconViewManager *manager); +GtkWidget *xfdesktop_icon_view_new(XfdesktopIconViewManager *manager, + XfconfChannel *channel); void xfdesktop_icon_view_add_item(XfdesktopIconView *icon_view, XfdesktopIcon *icon); --- xfdesktop4-4.9.2.orig/src/xfdesktop-icon-view.c +++ xfdesktop4-4.9.2/src/xfdesktop-icon-view.c @@ -50,7 +50,6 @@ #include #include -#include #define DEFAULT_FONT_SIZE 12 #define DEFAULT_ICON_SIZE 32 @@ -673,14 +672,6 @@ xfdesktop_icon_view_init(XfdesktopIconVi g_signal_connect(G_OBJECT(icon_view), "query-tooltip", G_CALLBACK(xfdesktop_icon_view_show_tooltip), NULL); - icon_view->priv->channel = xfconf_channel_new (XFDESKTOP_CHANNEL); - - xfconf_g_property_bind(icon_view->priv->channel, - "/desktop-icons/single-click", - G_TYPE_BOOLEAN, - G_OBJECT(icon_view), - "single_click"); - GTK_WIDGET_SET_FLAGS(GTK_WIDGET(icon_view), GTK_NO_WINDOW); } @@ -694,6 +685,8 @@ xfdesktop_icon_view_finalize(GObject *ob g_object_unref(G_OBJECT(icon_view->priv->manager)); } + g_object_unref(G_OBJECT(icon_view->priv->channel)); + gtk_target_list_unref(icon_view->priv->native_targets); gtk_target_list_unref(icon_view->priv->source_targets); gtk_target_list_unref(icon_view->priv->dest_targets); @@ -702,11 +695,6 @@ xfdesktop_icon_view_finalize(GObject *ob g_list_free(icon_view->priv->pending_icons); /* icon_view->priv->icons should be cleared in _unrealize() */ - if (icon_view->priv->channel) { - g_object_unref (icon_view->priv->channel); - icon_view->priv->channel = NULL; - } - G_OBJECT_CLASS(xfdesktop_icon_view_parent_class)->finalize(obj); } @@ -3379,7 +3367,8 @@ xfdesktop_icon_view_icon_changed(Xfdeskt GtkWidget * -xfdesktop_icon_view_new(XfdesktopIconViewManager *manager) +xfdesktop_icon_view_new(XfdesktopIconViewManager *manager, + XfconfChannel *channel) { XfdesktopIconView *icon_view; @@ -3387,7 +3376,14 @@ xfdesktop_icon_view_new(XfdesktopIconVie icon_view = g_object_new(XFDESKTOP_TYPE_ICON_VIEW, NULL); icon_view->priv->manager = manager; - + icon_view->priv->channel = g_object_ref(G_OBJECT(channel)); + + xfconf_g_property_bind(icon_view->priv->channel, + "/desktop-icons/single-click", + G_TYPE_BOOLEAN, + G_OBJECT(icon_view), + "single-click"); + return GTK_WIDGET(icon_view); }