diff --git a/libbackground/ChangeLog b/libbackground/ChangeLog index 91ca688f2..0fad4202e 100644 --- a/libbackground/ChangeLog +++ b/libbackground/ChangeLog @@ -1,3 +1,12 @@ +2002-02-17 Bradford Hovinen + + * applier.c (need_root_pixmap_p): We don't need a root pixmap if + neither a wallpaper nor a gradient is enabled + (render_to_screen): Use set_back_pixmap/set_background when just + setting a color with a root applier + (need_root_pixmap_p): If the last preferences structure had + neither gradient nor wallpaper enabled, we need a new root pixmap + 2002-02-12 Lauris Kaplinski * applier.c (draw_disabled_message): Use g_object_unref for GdkGC diff --git a/libbackground/applier.c b/libbackground/applier.c index db17a1326..b1c69e1f9 100644 --- a/libbackground/applier.c +++ b/libbackground/applier.c @@ -774,6 +774,7 @@ render_to_screen (BGApplier *bg_applier, const BGPreferences *prefs) gdk_colormap_alloc_colors (gdk_drawable_get_colormap (gdk_get_default_root_window ()), prefs->color1, 1, FALSE, TRUE, &success); #endif + gdk_gc_set_foreground (gc, prefs->color1); gdk_draw_rectangle (bg_applier->p->pixmap, gc, TRUE, bg_applier->p->render_geom.x, @@ -814,12 +815,19 @@ render_to_screen (BGApplier *bg_applier, const BGPreferences *prefs) gdk_colormap_alloc_colors (gdk_drawable_get_colormap (gdk_get_default_root_window ()), prefs->color1, 1, FALSE, TRUE, &success); #endif - gdk_gc_set_foreground (gc, prefs->color1); - gdk_draw_rectangle (bg_applier->p->pixmap, gc, TRUE, - bg_applier->p->render_geom.x, - bg_applier->p->render_geom.y, - bg_applier->p->render_geom.width, - bg_applier->p->render_geom.height); + + if (bg_applier->p->type == BG_APPLIER_PREVIEW) { + gdk_gc_set_foreground (gc, prefs->color1); + gdk_draw_rectangle (bg_applier->p->pixmap, gc, TRUE, + bg_applier->p->render_geom.x, + bg_applier->p->render_geom.y, + bg_applier->p->render_geom.width, + bg_applier->p->render_geom.height); + } + else if (bg_applier->p->type == BG_APPLIER_ROOT) { + gdk_window_set_back_pixmap (GDK_ROOT_PARENT (), NULL, FALSE); + gdk_window_set_background (GDK_ROOT_PARENT (), prefs->color1); + } } } @@ -1251,7 +1259,11 @@ need_wallpaper_load_p (const BGApplier *bg_applier, const BGPreferences *prefs) static gboolean need_root_pixmap_p (const BGApplier *bg_applier, const BGPreferences *prefs) { - if (bg_applier->p->last_prefs == NULL) + if (prefs->wallpaper_enabled == FALSE && prefs->gradient_enabled == FALSE) + return FALSE; + else if (bg_applier->p->last_prefs == NULL) + return TRUE; + else if (bg_applier->p->last_prefs->wallpaper_enabled == FALSE && bg_applier->p->last_prefs->gradient_enabled == FALSE) return TRUE; else if (render_small_pixmap_p (bg_applier->p->last_prefs) != render_small_pixmap_p (prefs)) return TRUE;