--- gnome-session-2.12.0/gnome-session/splash-widget.h.shaped 2005-08-08 03:35:13.000000000 -0400 +++ gnome-session-2.12.0/gnome-session/splash-widget.h 2006-01-12 02:19:59.000000000 -0500 @@ -36,7 +36,6 @@ GnomeIconTheme *icon_theme; GdkPixbuf *background; - GdkPixmap *bg_pixmap; GList *icons; PangoLayout *layout; PangoAttribute *font_size_attr; @@ -66,13 +65,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 --- gnome-session-2.12.0/gnome-session/splash-widget.c.shaped 2006-01-12 02:19:59.000000000 -0500 +++ gnome-session-2.12.0/gnome-session/splash-widget.c 2006-01-12 02:22:28.000000000 -0500 @@ -137,16 +137,6 @@ if (!GTK_WIDGET_DRAWABLE (widget)) return FALSE; - if (gdk_rectangle_intersect ( - &event->area, &sw->image_bounds, &exposed)) - gdk_draw_drawable ( - GDK_DRAWABLE (widget->window), - widget->style->black_gc, - GDK_DRAWABLE (sw->bg_pixmap), - exposed.x, exposed.y, - exposed.x, exposed.y, - exposed.width, exposed.height); - for (l = sw->icons; l; l = l->next) { SplashIcon *si = l->data; @@ -221,33 +211,42 @@ static void splash_widget_realize (GtkWidget *widget) { - GdkPixmap *pm; SplashWidget *sw = (SplashWidget *) widget; GNOME_CALL_PARENT (GTK_WIDGET_CLASS, realize, (widget)); if (sw->background && widget->window) { - int width, height; + GdkPixmap *pixmap; + GdkBitmap *mask; + GdkColormap *colormap; - width = gdk_pixbuf_get_width (sw->background); - height = gdk_pixbuf_get_height (sw->background); + pixmap = NULL; + mask = NULL; - pm = gdk_pixmap_new ( - widget->window, - width, height, - gdk_drawable_get_visual (widget->window)->depth); + colormap = gtk_widget_get_colormap (widget); + gdk_pixbuf_render_pixmap_and_mask_for_colormap (sw->background, + colormap, + &pixmap, &mask, + 125); - if (pm) { - gdk_pixbuf_render_to_drawable ( - sw->background, GDK_DRAWABLE (pm), - widget->style->black_gc, - 0, 0, 0, 0, width, height, - GDK_RGB_DITHER_MAX, - 0, 0); - - gdk_window_set_back_pixmap ( - widget->window, pm, FALSE); - sw->bg_pixmap = pm; + if (pixmap) { + GtkStyle *style; + + style = gtk_style_copy (widget->style); + style->bg_pixmap[GTK_STATE_NORMAL] = pixmap; + + gtk_widget_set_style (widget, style); + g_object_unref (style); + + if (mask) { + gdk_window_shape_combine_mask (widget->window, + mask, 0, 0); + + g_object_unref (mask); + } + + gtk_style_set_background (widget->style, widget->window, + GTK_STATE_NORMAL); } } } @@ -257,11 +256,6 @@ { SplashWidget *sw = (SplashWidget *) widget; - if (sw->bg_pixmap) { - g_object_unref (sw->bg_pixmap); - sw->bg_pixmap = NULL; - } - GNOME_CALL_PARENT (GTK_WIDGET_CLASS, unrealize, (widget)); }