690
692
XfceDesktop *desktop = XFCE_DESKTOP(user_data);
691
693
gint current_workspace, new_workspace, i;
692
XfceBackdrop *new_backdrop;
694
XfceBackdrop *current_backdrop, *new_backdrop;
694
696
TRACE("entering");
710
712
current_workspace, new_workspace);
712
714
for(i = 0; i < xfce_desktop_get_n_monitors(desktop); i++) {
715
/* We want to compare the current workspace backdrop with the new one
716
* and see if we can avoid changing them if they are the same image/style */
714
717
if(current_workspace < desktop->priv->nworkspaces && current_workspace >= 0) {
718
current_backdrop = xfce_workspace_get_backdrop(desktop->priv->workspaces[current_workspace], i);
716
719
new_backdrop = xfce_workspace_get_backdrop(desktop->priv->workspaces[new_workspace], i);
717
backdrop_changed_cb(new_backdrop, user_data);
721
if(!xfce_backdrop_compare_backdrops(current_backdrop, new_backdrop) || !desktop->priv->bg_pixmap) {
722
/* only update monitors that require it */
723
backdrop_changed_cb(new_backdrop, user_data);
719
726
/* If current_workspace was removed or never existed, get the new
720
727
* backdrop and apply it */
976
983
g_object_unref(G_OBJECT(desktop->priv->channel));
977
984
g_free(desktop->priv->property_prefix);
979
if(desktop->priv->style_refresh_timer != 0)
980
g_source_remove(desktop->priv->style_refresh_timer);
982
986
G_OBJECT_CLASS(xfce_desktop_parent_class)->finalize(object);
1085
1089
gtk_window_set_screen(GTK_WINDOW(desktop), desktop->priv->gscreen);
1086
1090
sw = gdk_screen_get_width(desktop->priv->gscreen);
1087
1091
sh = gdk_screen_get_height(desktop->priv->gscreen);
1088
if(gtk_major_version > 2
1089
|| (gtk_major_version == 2 && gtk_minor_version >= 13))
1091
g_signal_connect(G_OBJECT(desktop->priv->gscreen),
1093
G_CALLBACK(xfce_desktop_monitors_changed),
1093
g_signal_connect(G_OBJECT(desktop->priv->gscreen),
1095
G_CALLBACK(xfce_desktop_monitors_changed),
1098
1099
GTK_WIDGET_CLASS(xfce_desktop_parent_class)->realize(widget);
1342
style_refresh_cb(gpointer *w)
1344
XfceDesktop *desktop = XFCE_DESKTOP(w);
1346
xfce_desktop_refresh(desktop);
1347
desktop->priv->style_refresh_timer = 0;
1353
1344
xfce_desktop_style_set(GtkWidget *w, GtkStyle *old_style)
1355
1346
XfceDesktop *desktop = XFCE_DESKTOP(w);
1357
if(desktop->priv->style_refresh_timer != 0)
1358
g_source_remove(desktop->priv->style_refresh_timer);
1360
desktop->priv->style_refresh_timer = g_timeout_add_seconds(1, (GSourceFunc)style_refresh_cb, w);
1347
#ifdef ENABLE_DESKTOP_ICONS
1348
gdouble old_font_size;
1353
g_return_if_fail(XFCE_IS_DESKTOP(desktop));
1355
if(!gtk_widget_get_realized(GTK_WIDGET(desktop)))
1358
if(desktop->priv->workspaces == NULL)
1361
if(GDK_IS_WINDOW(desktop->priv->bg_pixmap))
1362
gdk_window_set_back_pixmap(gtk_widget_get_window(GTK_WIDGET(desktop)), desktop->priv->bg_pixmap, FALSE);
1364
gtk_widget_queue_draw(GTK_WIDGET(desktop));
1366
#ifdef ENABLE_DESKTOP_ICONS
1367
if(!desktop->priv->icon_view || !XFDESKTOP_IS_ICON_VIEW(desktop->priv->icon_view))
1370
/* reset the icon view style */
1371
gtk_widget_set_style(desktop->priv->icon_view, NULL);
1372
gtk_widget_reset_rc_styles(desktop->priv->icon_view);
1374
old_font_size = desktop->priv->system_font_size;
1375
if(xfce_desktop_ensure_system_font_size(desktop) != old_font_size
1376
&& desktop->priv->icon_view && !desktop->priv->icons_font_size_set)
1378
xfdesktop_icon_view_set_font_size(XFDESKTOP_ICON_VIEW(desktop->priv->icon_view),
1379
desktop->priv->system_font_size);