--- 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);