--- gnome-desktop-2.29.90/libgnome-desktop/gnome-bg.c 2010-02-18 15:41:43.851703409 -0500 +++ gnome-desktop-2.29.90.spanned/libgnome-desktop/gnome-bg.c 2010-02-18 14:42:53.895955816 -0500 @@ -228,6 +228,7 @@ { GNOME_BG_PLACEMENT_SCALED, "scaled" }, { GNOME_BG_PLACEMENT_ZOOMED, "zoom" }, { GNOME_BG_PLACEMENT_TILED, "wallpaper" }, + { GNOME_BG_PLACEMENT_SPANNED, "spanned" }, { 0, NULL } }; @@ -740,12 +741,17 @@ GdkPixbuf *new; #if 0 - g_print ("original_width: %d %d\n", + g_print ("get scaled %d %d, original_width: %d %d\n", + width, height, gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf)); #endif switch (placement) { + case GNOME_BG_PLACEMENT_SPANNED: + new = pixbuf_scale_to_fit (pixbuf, width, height); + /* new = g_object_ref (pixbuf); */ + break; case GNOME_BG_PLACEMENT_ZOOMED: new = pixbuf_scale_to_min (pixbuf, width, height); break; @@ -800,6 +806,9 @@ case GNOME_BG_PLACEMENT_SCALED: pixbuf_blend (scaled, dest, 0, 0, w, h, x + area->x, y + area->y, 1.0); break; + case GNOME_BG_PLACEMENT_SPANNED: + pixbuf_blend (scaled, dest, 0, 0, w, h, x, y, 1.0); + break; default: g_assert_not_reached (); break; @@ -878,7 +887,7 @@ if (!bg) return; - if (is_root) { + if (is_root && (bg->placement != GNOME_BG_PLACEMENT_SPANNED)) { draw_color_each_monitor (bg, dest, screen); draw_each_monitor (bg, dest, screen); } else { --- gnome-desktop-2.29.90/libgnome-desktop/libgnomeui/gnome-bg.h 2009-12-17 06:27:18.000000000 -0500 +++ gnome-desktop-2.29.90.spanned/libgnome-desktop/libgnomeui/gnome-bg.h 2010-02-18 13:52:17.476702082 -0500 @@ -59,7 +59,8 @@ GNOME_BG_PLACEMENT_ZOOMED, GNOME_BG_PLACEMENT_CENTERED, GNOME_BG_PLACEMENT_SCALED, - GNOME_BG_PLACEMENT_FILL_SCREEN + GNOME_BG_PLACEMENT_FILL_SCREEN, + GNOME_BG_PLACEMENT_SPANNED } GnomeBGPlacement; GType gnome_bg_get_type (void);