Blob Blame History Raw
--- gnome-session-2.12.0/gnome-session/splash-widget.c.shaped	2005-12-20 15:45:53.000000000 -0500
+++ gnome-session-2.12.0/gnome-session/splash-widget.c	2005-12-20 16:23:55.000000000 -0500
@@ -138,7 +138,7 @@
 		return FALSE;
 
 	if (gdk_rectangle_intersect (
-		&event->area, &sw->image_bounds, &exposed))
+		&event->area, &sw->image_bounds, &exposed)) {
 		gdk_draw_drawable  (
 			GDK_DRAWABLE (widget->window),
 			widget->style->black_gc,
@@ -147,6 +147,15 @@
 			exposed.x, exposed.y,
 			exposed.width, exposed.height);
 
+		if (sw->bg_mask)
+			gdk_window_shape_combine_mask (
+						widget->window,
+						sw->bg_mask,
+						0,
+						0);
+			
+        }
+
 	for (l = sw->icons; l; l = l->next) {
 		SplashIcon *si = l->data;
 
@@ -228,7 +237,9 @@
 
 	if (sw->background && widget->window) {
 		int width, height;
-
+		GdkPixmap *mask;
+		mask = NULL;
+	
 		width = gdk_pixbuf_get_width  (sw->background);
 		height = gdk_pixbuf_get_height (sw->background);
 
@@ -237,6 +248,11 @@
 			width, height,
 			gdk_drawable_get_visual (widget->window)->depth);
 
+		mask = gdk_pixmap_new (
+			widget->window,
+			width, height,
+			1);
+
 		if (pm) {
 			gdk_pixbuf_render_to_drawable (
 				sw->background, GDK_DRAWABLE (pm),
@@ -247,6 +263,22 @@
 			
 			gdk_window_set_back_pixmap (
 				widget->window, pm, FALSE);
+
+			if (mask) {
+				gdk_pixbuf_render_threshold_alpha (
+					sw->background, (GdkBitmap *) mask,
+					0, 0, 0, 0, width, height,
+					125);
+
+				gdk_window_shape_combine_mask (
+							widget->window,
+							(GdkBitmap *) mask,
+							0,
+							0);
+
+			} 
+			
+			sw->bg_mask = (GdkBitmap *) mask;
 			sw->bg_pixmap = pm;
 		}
 	}
@@ -262,6 +294,12 @@
 		sw->bg_pixmap = NULL;
 	}
 
+        if (sw->bg_mask) {
+		g_object_unref (sw->bg_mask);
+		sw->bg_mask = NULL;
+	}
+
+
 	GNOME_CALL_PARENT (GTK_WIDGET_CLASS, unrealize, (widget));
 }
 
--- gnome-session-2.12.0/gnome-session/splash-widget.h.shaped	2005-12-20 16:10:05.000000000 -0500
+++ gnome-session-2.12.0/gnome-session/splash-widget.h	2005-12-20 16:18:02.000000000 -0500
@@ -37,6 +37,7 @@
   
 	GdkPixbuf   *background;
 	GdkPixmap   *bg_pixmap;
+	GdkBitmap   *bg_mask;
 	GList       *icons;
 	PangoLayout *layout;
 	PangoAttribute   *font_size_attr;
@@ -66,13 +67,13 @@
 #define SPLASH_BASE_HEIGHT 220
 
 /* offset from bottom of label & font */
-#define SPLASH_LABEL_V_OFFSET 3
+#define SPLASH_LABEL_V_OFFSET 79
 #define SPLASH_LABEL_FONT_SIZE 8
 
 /* icon border, spacing, offset from bottom and initial size */
-#define SPLASH_ICON_BORDER  8
+#define SPLASH_ICON_BORDER  78 
 #define SPLASH_ICON_SPACING 4
-#define SPLASH_ICON_V_OFFSET 14
+#define SPLASH_ICON_V_OFFSET 90
 #define SPLASH_BASE_ICON_SIZE 36
 #define SPLASH_BASE_ICON_ROWS 1