[gnome-desktop] Add a picture option to make the background span monitors



commit 8eb0886312751054e2e6d9b10eedbb0ddf180deb
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Feb 18 15:51:53 2010 -0500

    Add a picture option to make the background span monitors
    
    This feature was lost in 2.28, and people miss it. See bug 603551.

 libgnome-desktop/gnome-bg.c            |    9 ++++++++-
 libgnome-desktop/libgnomeui/gnome-bg.h |    3 ++-
 2 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/libgnome-desktop/gnome-bg.c b/libgnome-desktop/gnome-bg.c
index 145e59e..c45dead 100644
--- a/libgnome-desktop/gnome-bg.c
+++ b/libgnome-desktop/gnome-bg.c
@@ -228,6 +228,7 @@ static GConfEnumStringPair placement_lookup[] = {
 	{ GNOME_BG_PLACEMENT_SCALED,      "scaled" },
 	{ GNOME_BG_PLACEMENT_ZOOMED,      "zoom" },
 	{ GNOME_BG_PLACEMENT_TILED,       "wallpaper" },
+	{ GNOME_BG_PLACEMENT_SPANNED,       "spanned" },
 	{ 0, NULL }
 };
 
@@ -733,6 +734,9 @@ get_scaled_pixbuf (GnomeBGPlacement placement,
 #endif
 	
 	switch (placement) {
+	case GNOME_BG_PLACEMENT_SPANNED:
+                new = pixbuf_scale_to_fit (pixbuf, width, height);
+		break;
 	case GNOME_BG_PLACEMENT_ZOOMED:
 		new = pixbuf_scale_to_min (pixbuf, width, height);
 		break;
@@ -787,6 +791,9 @@ draw_image_area (GnomeBGPlacement  placement,
 	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;
@@ -865,7 +872,7 @@ gnome_bg_draw (GnomeBG *bg,
 	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 {
diff --git a/libgnome-desktop/libgnomeui/gnome-bg.h b/libgnome-desktop/libgnomeui/gnome-bg.h
index 6ab2cb0..0d12b3b 100644
--- a/libgnome-desktop/libgnomeui/gnome-bg.h
+++ b/libgnome-desktop/libgnomeui/gnome-bg.h
@@ -59,7 +59,8 @@ typedef enum {
 	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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]