Author: kelnos Date: 2009-04-02 06:23:41 +0000 (Thu, 02 Apr 2009) New Revision: 29692
Modified: xfdesktop/trunk/NEWS xfdesktop/trunk/src/main.c xfdesktop/trunk/src/xfce-desktop.c xfdesktop/trunk/src/xfce-desktop.h Log: reload image and icon view when 'xfdesktop --reload' is run (bug 5156) Modified: xfdesktop/trunk/NEWS =================================================================== --- xfdesktop/trunk/NEWS 2009-04-02 05:43:16 UTC (rev 29691) +++ xfdesktop/trunk/NEWS 2009-04-02 06:23:41 UTC (rev 29692) @@ -2,7 +2,10 @@ ---------- * Fix desktop menu failing to load on FreeBSD (bug 3370). - * Ensure root window properties get deleted when xfdesktop quits (bug 5154). + * Ensure root window properties get deleted when xfdesktop + quits (bug 5154). + * Reload the backdrop and icon view when 'xfdesktop --reload' + is run (bug 5156). Xfce 4.6.0 Modified: xfdesktop/trunk/src/main.c =================================================================== --- xfdesktop/trunk/src/main.c 2009-04-02 05:43:16 UTC (rev 29691) +++ xfdesktop/trunk/src/main.c 2009-04-02 06:23:41 UTC (rev 29692) @@ -152,8 +152,17 @@ static gboolean reload_idle_cb(gpointer data) { - //settings_reload_all(); /* FIXME */ + XfceDesktop **desktops = data; + gint i, nscreens; + + nscreens = gdk_display_get_n_screens(gdk_display_get_default()); + for(i = 0; i < nscreens; ++i) { + if(desktops[i]) + xfce_desktop_refresh(desktops[i]); + } + menu_reload(); + return FALSE; } @@ -162,7 +171,7 @@ { if(evt->data_format == 8) { if(!strcmp(RELOAD_MESSAGE, evt->data.b)) { - g_idle_add ((GSourceFunc)reload_idle_cb, NULL); + g_idle_add((GSourceFunc)reload_idle_cb, user_data); return TRUE; } else if(!strcmp(MENU_MESSAGE, evt->data.b)) { xfce_desktop_popup_root_menu(XFCE_DESKTOP(w), 0, @@ -331,7 +340,7 @@ channel = xfconf_channel_new(XFDESKTOP_CHANNEL); nscreens = gdk_display_get_n_screens(gdpy); - desktops = g_new(GtkWidget *, nscreens); + desktops = g_new0(GtkWidget *, nscreens); for(i = 0; i < nscreens; i++) { g_snprintf(buf, sizeof(buf), "/backdrop/screen%d/", i); desktops[i] = xfce_desktop_new(gdk_display_get_screen(gdpy, i), @@ -341,7 +350,7 @@ g_signal_connect(G_OBJECT(desktops[i]), "scroll-event", G_CALLBACK(scroll_cb), NULL); g_signal_connect(G_OBJECT(desktops[i]), "client-event", - G_CALLBACK(client_message_received), NULL); + G_CALLBACK(client_message_received), desktops); menu_attach(XFCE_DESKTOP(desktops[i])); windowlist_attach(XFCE_DESKTOP(desktops[i])); gtk_widget_show(desktops[i]); Modified: xfdesktop/trunk/src/xfce-desktop.c =================================================================== --- xfdesktop/trunk/src/xfce-desktop.c 2009-04-02 05:43:16 UTC (rev 29691) +++ xfdesktop/trunk/src/xfce-desktop.c 2009-04-02 06:23:41 UTC (rev 29692) @@ -1377,3 +1377,43 @@ xfce_desktop_do_menu_popup(desktop, button, activate_time, signals[SIG_POPULATE_SECONDARY_ROOT_MENU]); } + +void +xfce_desktop_refresh(XfceDesktop *desktop) +{ + gchar buf[256]; + guint i, max; + + g_return_if_fail(XFCE_IS_DESKTOP(desktop)); + + if(!GTK_WIDGET_REALIZED(desktop)) + return; + + /* reload image */ + if(desktop->priv->xinerama_stretch) + max = 1; + else + max = desktop->priv->nbackdrops; + for(i = 0; i < max; ++i) { + GValue val = { 0, }; + + g_snprintf(buf, sizeof(buf), "%smonitor%d/image-path", + desktop->priv->property_prefix, i); + xfconf_channel_get_property(desktop->priv->channel, buf, &val); + + xfce_desktop_image_filename_changed(desktop->priv->channel, buf, + &val, desktop); + + if(G_VALUE_TYPE(&val)) + g_value_unset(&val); + } + +#ifdef ENABLE_DESKTOP_ICONS + /* reload icon view */ + if(desktop->priv->icon_view) { + gtk_widget_destroy(desktop->priv->icon_view); + desktop->priv->icon_view = NULL; + } + xfce_desktop_setup_icon_view(desktop); +#endif +} Modified: xfdesktop/trunk/src/xfce-desktop.h =================================================================== --- xfdesktop/trunk/src/xfce-desktop.h 2009-04-02 05:43:16 UTC (rev 29691) +++ xfdesktop/trunk/src/xfce-desktop.h 2009-04-02 06:23:41 UTC (rev 29692) @@ -114,6 +114,8 @@ guint button, guint activate_time); +void xfce_desktop_refresh(XfceDesktop *desktop); + G_END_DECLS #endif _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits