20788N/Adiff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/data/session-setup.entries gdm-2.30.4/data/session-setup.entries
20788N/A--- ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/data/session-setup.entries 2010-08-09 09:51:02.535624440 +0200
20788N/A+++ gdm-2.30.4/data/session-setup.entries 2010-08-09 09:55:22.681440019 +0200
20788N/A@@ -422,6 +422,12 @@
20788N/A <int>300</int>
20788N/A </value>
20788N/A </entry>
20788N/A+ <entry>
20788N/A+ <key>/desktop/gnome/background/picture_filename</key>
20788N/A+ <value>
20788N/A+ <string>/usr/share/gdm/bkg.jpg</string>
20788N/A+ </value>
20788N/A+ </entry>
20788N/A
20788N/A <entry>
20788N/A <key>/apps/gnome_settings_daemon/keybindings/eject</key>
20788N/Adiff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/Makefile.am gdm-2.30.4/gui/simple-greeter/Makefile.am
20788N/A--- ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/Makefile.am 2010-08-09 09:51:02.577658995 +0200
20788N/A+++ gdm-2.30.4/gui/simple-greeter/Makefile.am 2010-08-09 09:58:18.846315706 +0200
20788N/A@@ -68,6 +68,8 @@ test_greeter_login_window_SOURCES = \
20788N/A gdm-user-chooser-dialog.c \
20788N/A gdm-extension-list.h \
20788N/A gdm-extension-list.c \
20788N/A+ branding.c \
20788N/A+ branding.h \
20788N/A $(NULL)
20788N/A
20788N/A test_greeter_login_window_LDADD = \
20788N/A@@ -110,6 +112,8 @@ test_greeter_panel_SOURCES = \
20788N/A gdm-sessions.c \
20788N/A gdm-session-option-widget.h \
20788N/A gdm-session-option-widget.c \
20788N/A+ branding.c \
20788N/A+ branding.h \
20788N/A $(NULL)
20788N/A
20788N/A test_greeter_panel_LDADD = \
20788N/A@@ -200,6 +204,8 @@ test_user_chooser_SOURCES = \
20788N/A gdm-user-chooser-widget.c \
20788N/A gdm-user-chooser-dialog.h \
20788N/A gdm-user-chooser-dialog.c \
20788N/A+ branding.c \
20788N/A+ branding.h \
20788N/A $(NULL)
20788N/A
20788N/A test_user_chooser_LDADD = \
20788N/A@@ -264,6 +270,8 @@ gdm_simple_greeter_SOURCES = \
20788N/A gdm-user-chooser-widget.c \
20788N/A gdm-extension-list.h \
20788N/A gdm-extension-list.c \
20788N/A+ branding.c \
20788N/A+ branding.h \
20788N/A $(NULL)
20788N/A
20788N/A gdm_simple_greeter_LDADD = \
20788N/A@@ -281,6 +289,10 @@ gdm_simple_greeter_LDADD = \
20788N/A uidir = $(pkgdatadir)
20788N/A ui_DATA = \
20788N/A gdm-greeter-login-window.ui \
20788N/A+ box.png \
20788N/A+ logo.png \
20788N/A+ bkg.jpg \
20788N/A+ bottom-panel-image-gdm.png \
20788N/A $(NULL)
20788N/A
20788N/A EXTRA_DIST = \
20788N/Adiff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/branding.c gdm-2.30.4/gui/simple-greeter/branding.c
20788N/A--- ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/branding.c 1970-01-01 01:00:00.000000000 +0100
20788N/A+++ gdm-2.30.4/gui/simple-greeter/branding.c 2010-08-09 09:51:46.928239708 +0200
20788N/A@@ -0,0 +1,824 @@
20788N/A+#include <gtk/gtk.h>
20788N/A+#include <gdk/gdkx.h>
20788N/A+#include <string.h>
20788N/A+#include <time.h>
20788N/A+
20788N/A+typedef struct
20788N/A+{
20788N/A+ GdkPixbuf *pixbuf;
20788N/A+ GSList *scaled;
20788N/A+ gboolean stretch;
20788N/A+ gint border_left;
20788N/A+ gint border_right;
20788N/A+ gint border_bottom;
20788N/A+ gint border_top;
20788N/A+ guint hints[3][3];
20788N/A+} ConstraintScale;
20788N/A+typedef enum
20788N/A+{
20788N/A+ COMPONENT_NORTH_WEST = 1 << 0,
20788N/A+ COMPONENT_NORTH = 1 << 1,
20788N/A+ COMPONENT_NORTH_EAST = 1 << 2,
20788N/A+ COMPONENT_WEST = 1 << 3,
20788N/A+ COMPONENT_CENTER = 1 << 4,
20788N/A+ COMPONENT_EAST = 1 << 5,
20788N/A+ COMPONENT_SOUTH_EAST = 1 << 6,
20788N/A+ COMPONENT_SOUTH = 1 << 7,
20788N/A+ COMPONENT_SOUTH_WEST = 1 << 8,
20788N/A+ COMPONENT_ALL = 1 << 9
20788N/A+} ConstraintScaleComponent;
20788N/A+
20788N/A+typedef enum {
20788N/A+ THEME_CONSTANT_ROWS = 1 << 0,
20788N/A+ THEME_CONSTANT_COLS = 1 << 1,
20788N/A+ THEME_MISSING = 1 << 2
20788N/A+} ThemeRenderHints;
20788N/A+
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+bilinear_gradient (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ guchar *src_pixels = gdk_pixbuf_get_pixels (src);
20788N/A+ guchar *p1, *p2, *p3, *p4;
20788N/A+ guint dest_rowstride;
20788N/A+ guchar *dest_pixels;
20788N/A+ GdkPixbuf *result;
20788N/A+ int i, j, k;
20788N/A+
20788N/A+ p1 = src_pixels + (src_y - 1) * src_rowstride + (src_x - 1) * n_channels;
20788N/A+ p2 = p1 + n_channels;
20788N/A+ p3 = src_pixels + src_y * src_rowstride + (src_x - 1) * n_channels;
20788N/A+ p4 = p3 + n_channels;
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ {
20788N/A+ guchar *p = dest_pixels + dest_rowstride *i;
20788N/A+ guint v[4];
20788N/A+ gint dv[4];
20788N/A+
20788N/A+ for (k = 0; k < n_channels; k++)
20788N/A+ {
20788N/A+ guint start = ((height - i) * p1[k] + (1 + i) * p3[k]) / (height + 1);
20788N/A+ guint end = ((height - i) * p2[k] + (1 + i) * p4[k]) / (height + 1);
20788N/A+
20788N/A+ dv[k] = (((gint)end - (gint)start) << 16) / (width + 1);
20788N/A+ v[k] = (start << 16) + dv[k] + 0x8000;
20788N/A+ }
20788N/A+
20788N/A+ for (j = width; j; j--)
20788N/A+ {
20788N/A+ for (k = 0; k < n_channels; k++)
20788N/A+ {
20788N/A+ *(p++) = v[k] >> 16;
20788N/A+ v[k] += dv[k];
20788N/A+ }
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+horizontal_gradient (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ guchar *src_pixels = gdk_pixbuf_get_pixels (src);
20788N/A+ guint dest_rowstride;
20788N/A+ guchar *dest_pixels;
20788N/A+ GdkPixbuf *result;
20788N/A+ int i, j, k;
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ {
20788N/A+ guchar *p = dest_pixels + dest_rowstride *i;
20788N/A+ guchar *p1 = src_pixels + (src_y + i) * src_rowstride + (src_x - 1) * n_channels;
20788N/A+ guchar *p2 = p1 + n_channels;
20788N/A+
20788N/A+ guint v[4];
20788N/A+ gint dv[4];
20788N/A+
20788N/A+ for (k = 0; k < n_channels; k++)
20788N/A+ {
20788N/A+ dv[k] = (((gint)p2[k] - (gint)p1[k]) << 16) / (width + 1);
20788N/A+ v[k] = (p1[k] << 16) + dv[k] + 0x8000;
20788N/A+ }
20788N/A+
20788N/A+ for (j = width; j; j--)
20788N/A+ {
20788N/A+ for (k = 0; k < n_channels; k++)
20788N/A+ {
20788N/A+ *(p++) = v[k] >> 16;
20788N/A+ v[k] += dv[k];
20788N/A+ }
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+vertical_gradient (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ guchar *src_pixels = gdk_pixbuf_get_pixels (src);
20788N/A+ guchar *top_pixels, *bottom_pixels;
20788N/A+ guint dest_rowstride;
20788N/A+ guchar *dest_pixels;
20788N/A+ GdkPixbuf *result;
20788N/A+ int i, j;
20788N/A+
20788N/A+ top_pixels = src_pixels + (src_y - 1) * src_rowstride + (src_x) * n_channels;
20788N/A+ bottom_pixels = top_pixels + src_rowstride;
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ {
20788N/A+ guchar *p = dest_pixels + dest_rowstride *i;
20788N/A+ guchar *p1 = top_pixels;
20788N/A+ guchar *p2 = bottom_pixels;
20788N/A+
20788N/A+ for (j = width * n_channels; j; j--)
20788N/A+ *(p++) = ((height - i) * *(p1++) + (1 + i) * *(p2++)) / (height + 1);
20788N/A+ }
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+replicate_single (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guchar *pixels = (gdk_pixbuf_get_pixels (src) +
20788N/A+ src_y * gdk_pixbuf_get_rowstride (src) +
20788N/A+ src_x * n_channels);
20788N/A+ guchar r = *(pixels++);
20788N/A+ guchar g = *(pixels++);
20788N/A+ guchar b = *(pixels++);
20788N/A+ guint dest_rowstride;
20788N/A+ guchar *dest_pixels;
20788N/A+ guchar a = 0;
20788N/A+ GdkPixbuf *result;
20788N/A+ int i, j;
20788N/A+
20788N/A+ if (n_channels == 4)
20788N/A+ a = *(pixels++);
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ {
20788N/A+ guchar *p = dest_pixels + dest_rowstride *i;
20788N/A+
20788N/A+ for (j = 0; j < width; j++)
20788N/A+ {
20788N/A+ *(p++) = r;
20788N/A+ *(p++) = g;
20788N/A+ *(p++) = b;
20788N/A+
20788N/A+ if (n_channels == 4)
20788N/A+ *(p++) = a;
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+replicate_rows (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ guchar *pixels = (gdk_pixbuf_get_pixels (src) + src_y * src_rowstride + src_x * n_channels);
20788N/A+ guchar *dest_pixels;
20788N/A+ GdkPixbuf *result;
20788N/A+ guint dest_rowstride;
20788N/A+ int i;
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ memcpy (dest_pixels + dest_rowstride * i, pixels, n_channels * width);
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+replicate_cols (GdkPixbuf *src,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint width,
20788N/A+ gint height)
20788N/A+{
20788N/A+ guint n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+ guint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ guchar *pixels = (gdk_pixbuf_get_pixels (src) + src_y * src_rowstride + src_x * n_channels);
20788N/A+ guchar *dest_pixels;
20788N/A+ GdkPixbuf *result;
20788N/A+ guint dest_rowstride;
20788N/A+ int i, j;
20788N/A+
20788N/A+ result = gdk_pixbuf_new (GDK_COLORSPACE_RGB, n_channels == 4, 8,
20788N/A+ width, height);
20788N/A+ dest_rowstride = gdk_pixbuf_get_rowstride (result);
20788N/A+ dest_pixels = gdk_pixbuf_get_pixels (result);
20788N/A+
20788N/A+ for (i = 0; i < height; i++)
20788N/A+ {
20788N/A+ guchar *p = dest_pixels + dest_rowstride * i;
20788N/A+ guchar *q = pixels + src_rowstride * i;
20788N/A+
20788N/A+ guchar r = *(q++);
20788N/A+ guchar g = *(q++);
20788N/A+ guchar b = *(q++);
20788N/A+ guchar a = 0;
20788N/A+
20788N/A+ if (n_channels == 4)
20788N/A+ a = *(q++);
20788N/A+
20788N/A+ for (j = 0; j < width; j++)
20788N/A+ {
20788N/A+ *(p++) = r;
20788N/A+ *(p++) = g;
20788N/A+ *(p++) = b;
20788N/A+
20788N/A+ if (n_channels == 4)
20788N/A+ *(p++) = a;
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ return result;
20788N/A+}
20788N/A+
20788N/A+/* Scale the rectangle (src_x, src_y, src_width, src_height)
20788N/A+ * onto the rectangle (dest_x, dest_y, dest_width, dest_height)
20788N/A+ * of the destination, and render into a pixbuf
20788N/A+ */
20788N/A+
20788N/A+static void
20788N/A+cs_render (GdkPixbuf *src,
20788N/A+ guint hints,
20788N/A+ GdkPixbuf *scaled,
20788N/A+ gint src_x,
20788N/A+ gint src_y,
20788N/A+ gint src_width,
20788N/A+ gint src_height,
20788N/A+ gint dest_x,
20788N/A+ gint dest_y,
20788N/A+ gint dest_width,
20788N/A+ gint dest_height)
20788N/A+{
20788N/A+ GdkPixbuf *tmp_pixbuf;
20788N/A+ GdkRectangle rect;
20788N/A+ int x_offset, y_offset;
20788N/A+ gboolean has_alpha = gdk_pixbuf_get_has_alpha (src);
20788N/A+ gint src_rowstride = gdk_pixbuf_get_rowstride (src);
20788N/A+ gint src_n_channels = gdk_pixbuf_get_n_channels (src);
20788N/A+
20788N/A+ if (dest_width <= 0 || dest_height <= 0)
20788N/A+ return;
20788N/A+
20788N/A+ rect.x = dest_x;
20788N/A+ rect.y = dest_y;
20788N/A+ rect.width = dest_width;
20788N/A+ rect.height = dest_height;
20788N/A+
20788N/A+ if (hints & THEME_MISSING)
20788N/A+ return;
20788N/A+
20788N/A+ if (dest_width == src_width && dest_height == src_height)
20788N/A+ {
20788N/A+ tmp_pixbuf = g_object_ref (src);
20788N/A+
20788N/A+ x_offset = src_x + rect.x - dest_x;
20788N/A+ y_offset = src_y + rect.y - dest_y;
20788N/A+ }
20788N/A+ else if (src_width == 0 && src_height == 0)
20788N/A+ {
20788N/A+ tmp_pixbuf = bilinear_gradient (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else if (src_width == 0 && dest_height == src_height)
20788N/A+ {
20788N/A+ tmp_pixbuf = horizontal_gradient (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else if (src_height == 0 && dest_width == src_width)
20788N/A+ {
20788N/A+ tmp_pixbuf = vertical_gradient (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else if ((hints & THEME_CONSTANT_COLS) && (hints & THEME_CONSTANT_ROWS))
20788N/A+ {
20788N/A+ tmp_pixbuf = replicate_single (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else if (dest_width == src_width && (hints & THEME_CONSTANT_COLS))
20788N/A+ {
20788N/A+ tmp_pixbuf = replicate_rows (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else if (dest_height == src_height && (hints & THEME_CONSTANT_ROWS))
20788N/A+ {
20788N/A+ tmp_pixbuf = replicate_cols (src, src_x, src_y, dest_width, dest_height);
20788N/A+
20788N/A+ x_offset = rect.x - dest_x;
20788N/A+ y_offset = rect.y - dest_y;
20788N/A+ }
20788N/A+ else
20788N/A+ {
20788N/A+ double x_scale = (double)dest_width / src_width;
20788N/A+ double y_scale = (double)dest_height / src_height;
20788N/A+ guchar *pixels;
20788N/A+ GdkPixbuf *partial_src;
20788N/A+
20788N/A+ pixels = (gdk_pixbuf_get_pixels (src)
20788N/A+ + src_y * src_rowstride
20788N/A+ + src_x * src_n_channels);
20788N/A+
20788N/A+ partial_src = gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB,
20788N/A+ has_alpha,
20788N/A+ 8, src_width, src_height,
20788N/A+ src_rowstride,
20788N/A+ NULL, NULL);
20788N/A+
20788N/A+ tmp_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
20788N/A+ has_alpha, 8,
20788N/A+ rect.width, rect.height);
20788N/A+
20788N/A+ gdk_pixbuf_scale (partial_src, tmp_pixbuf,
20788N/A+ 0, 0, rect.width, rect.height,
20788N/A+ dest_x - rect.x, dest_y - rect.y,
20788N/A+ x_scale, y_scale,
20788N/A+ GDK_INTERP_BILINEAR);
20788N/A+
20788N/A+ gdk_pixbuf_unref (partial_src);
20788N/A+
20788N/A+ x_offset = 0;
20788N/A+ y_offset = 0;
20788N/A+ }
20788N/A+
20788N/A+ if (rect.x >= 0 && rect.x + rect.width <= gdk_pixbuf_get_width (scaled) &&
20788N/A+ rect.y >= 0 && rect.y + rect.height <= gdk_pixbuf_get_height (scaled))
20788N/A+ {
20788N/A+ gdk_pixbuf_copy_area (tmp_pixbuf,
20788N/A+ x_offset, y_offset,
20788N/A+ rect.width, rect.height,
20788N/A+ scaled,
20788N/A+ rect.x,
20788N/A+ rect.y);
20788N/A+ }
20788N/A+ gdk_pixbuf_unref (tmp_pixbuf);
20788N/A+}
20788N/A+
20788N/A+static guint
20788N/A+compute_hint (GdkPixbuf *pixbuf,
20788N/A+ gint x0,
20788N/A+ gint x1,
20788N/A+ gint y0,
20788N/A+ gint y1)
20788N/A+{
20788N/A+ int i, j;
20788N/A+ int hints = THEME_CONSTANT_ROWS | THEME_CONSTANT_COLS | THEME_MISSING;
20788N/A+ int n_channels = gdk_pixbuf_get_n_channels (pixbuf);
20788N/A+
20788N/A+ guchar *data = gdk_pixbuf_get_pixels (pixbuf);
20788N/A+ int rowstride = gdk_pixbuf_get_rowstride (pixbuf);
20788N/A+
20788N/A+ if (x0 == x1 || y0 == y1)
20788N/A+ return 0;
20788N/A+
20788N/A+ for (i = y0; i < y1; i++)
20788N/A+ {
20788N/A+ guchar *p = data + i * rowstride + x0 * n_channels;
20788N/A+ guchar r = p[0];
20788N/A+ guchar g = p[1];
20788N/A+ guchar b = p[2];
20788N/A+ guchar a = 0;
20788N/A+
20788N/A+ if (n_channels == 4)
20788N/A+ a = p[3];
20788N/A+
20788N/A+ for (j = x0; j < x1 ; j++)
20788N/A+ {
20788N/A+ if (n_channels != 4 || p[3] != 0)
20788N/A+ {
20788N/A+ hints &= ~THEME_MISSING;
20788N/A+ if (!(hints & THEME_CONSTANT_ROWS))
20788N/A+ goto cols;
20788N/A+ }
20788N/A+
20788N/A+ if (r != *(p++) ||
20788N/A+ g != *(p++) ||
20788N/A+ b != *(p++) ||
20788N/A+ (n_channels != 4 && a != *(p++)))
20788N/A+ {
20788N/A+ hints &= ~THEME_CONSTANT_ROWS;
20788N/A+ if (!(hints & THEME_MISSING))
20788N/A+ goto cols;
20788N/A+ }
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ cols:
20788N/A+ for (i = y0 + 1; i < y1; i++)
20788N/A+ {
20788N/A+ guchar *base = data + y0 * rowstride + x0 * n_channels;
20788N/A+ guchar *p = data + i * rowstride + x0 * n_channels;
20788N/A+
20788N/A+ if (memcmp (p, base, n_channels * (x1 - x0)) != 0)
20788N/A+ {
20788N/A+ hints &= ~THEME_CONSTANT_COLS;
20788N/A+ return hints;
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ return hints;
20788N/A+}
20788N/A+
20788N/A+static void
20788N/A+constraint_scale_compute_hints (ConstraintScale *cs_pb)
20788N/A+{
20788N/A+ int i, j;
20788N/A+ gint width = gdk_pixbuf_get_width (cs_pb->pixbuf);
20788N/A+ gint height = gdk_pixbuf_get_height (cs_pb->pixbuf);
20788N/A+
20788N/A+ if (cs_pb->border_left + cs_pb->border_right > width ||
20788N/A+ cs_pb->border_top + cs_pb->border_bottom > height)
20788N/A+ {
20788N/A+ g_warning ("Invalid borders specified");
20788N/A+ if (cs_pb->border_left + cs_pb->border_right > width)
20788N/A+ {
20788N/A+ cs_pb->border_left = width / 2;
20788N/A+ cs_pb->border_right = (width + 1) / 2;
20788N/A+ }
20788N/A+ if (cs_pb->border_bottom + cs_pb->border_top > height)
20788N/A+ {
20788N/A+ cs_pb->border_top = height / 2;
20788N/A+ cs_pb->border_bottom = (height + 1) / 2;
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ for (i = 0; i < 3; i++)
20788N/A+ {
20788N/A+ gint y0, y1;
20788N/A+
20788N/A+ switch (i)
20788N/A+ {
20788N/A+ case 0:
20788N/A+ y0 = 0;
20788N/A+ y1 = cs_pb->border_top;
20788N/A+ break;
20788N/A+ case 1:
20788N/A+ y0 = cs_pb->border_top;
20788N/A+ y1 = height - cs_pb->border_bottom;
20788N/A+ break;
20788N/A+ default:
20788N/A+ y0 = height - cs_pb->border_bottom;
20788N/A+ y1 = height;
20788N/A+ break;
20788N/A+ }
20788N/A+
20788N/A+ for (j = 0; j < 3; j++)
20788N/A+ {
20788N/A+ gint x0, x1;
20788N/A+
20788N/A+ switch (j)
20788N/A+ {
20788N/A+ case 0:
20788N/A+ x0 = 0;
20788N/A+ x1 = cs_pb->border_left;
20788N/A+ break;
20788N/A+ case 1:
20788N/A+ x0 = cs_pb->border_left;
20788N/A+ x1 = width - cs_pb->border_right;
20788N/A+ break;
20788N/A+ default:
20788N/A+ x0 = width - cs_pb->border_right;
20788N/A+ x1 = width;
20788N/A+ break;
20788N/A+ }
20788N/A+
20788N/A+ cs_pb->hints[i][j] = compute_hint (cs_pb->pixbuf, x0, x1, y0, y1);
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+}
20788N/A+
20788N/A+static GdkPixbuf *
20788N/A+constraint_scale (GdkPixbuf *pixbuf,
20788N/A+ gint x,
20788N/A+ gint y,
20788N/A+ gint width,
20788N/A+ gint height,
20788N/A+ gint border_left,
20788N/A+ gint border_right,
20788N/A+ gint border_bottom,
20788N/A+ gint border_top)
20788N/A+{
20788N/A+ gint src_x[4], src_y[4], dest_x[4], dest_y[4];
20788N/A+ gint pixbuf_width = gdk_pixbuf_get_width (pixbuf);
20788N/A+ gint pixbuf_height = gdk_pixbuf_get_height (pixbuf);
20788N/A+ GdkGC *scaled_tmp_gc = NULL;
20788N/A+ ConstraintScale *cs_pb = g_new0 (ConstraintScale, 1);
20788N/A+ guint component_mask = COMPONENT_ALL;
20788N/A+
20788N/A+ cs_pb->pixbuf = pixbuf;
20788N/A+ cs_pb->stretch = TRUE;
20788N/A+ cs_pb->border_left = border_left;
20788N/A+ cs_pb->border_right = border_right;
20788N/A+ cs_pb->border_bottom = border_bottom;
20788N/A+ cs_pb->border_top = border_top;
20788N/A+ constraint_scale_compute_hints (cs_pb);
20788N/A+
20788N/A+ if (cs_pb->stretch)
20788N/A+ {
20788N/A+ gboolean cached = TRUE;
20788N/A+ GdkPixbuf *scaled = NULL;
20788N/A+
20788N/A+ if (!scaled)
20788N/A+ {
20788N/A+ scaled = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (cs_pb->pixbuf),
20788N/A+ gdk_pixbuf_get_has_alpha (cs_pb->pixbuf),
20788N/A+ gdk_pixbuf_get_bits_per_sample (cs_pb->pixbuf),
20788N/A+ width,
20788N/A+ height);
20788N/A+
20788N/A+ gdk_pixbuf_fill (scaled, 0x00000000);
20788N/A+
20788N/A+
20788N/A+ src_x[0] = 0;
20788N/A+ src_x[1] = cs_pb->border_left;
20788N/A+ src_x[2] = pixbuf_width - cs_pb->border_right;
20788N/A+ src_x[3] = pixbuf_width;
20788N/A+
20788N/A+ src_y[0] = 0;
20788N/A+ src_y[1] = cs_pb->border_top;
20788N/A+ src_y[2] = pixbuf_height - cs_pb->border_bottom;
20788N/A+ src_y[3] = pixbuf_height;
20788N/A+
20788N/A+ dest_x[0] = 0;
20788N/A+ dest_x[1] = cs_pb->border_left;
20788N/A+ dest_x[2] = width - cs_pb->border_right;
20788N/A+ dest_x[3] = width;
20788N/A+
20788N/A+ dest_y[0] = 0;
20788N/A+ dest_y[1] = cs_pb->border_top;
20788N/A+ dest_y[2] = height - cs_pb->border_bottom;
20788N/A+ dest_y[3] = height;
20788N/A+
20788N/A+
20788N/A+ if (component_mask & COMPONENT_ALL)
20788N/A+ component_mask = (COMPONENT_ALL - 1) & ~component_mask;
20788N/A+
20788N/A+#define RENDER_COMPONENT(X1,X2,Y1,Y2) \
20788N/A+ cs_render (pixbuf, cs_pb->hints[Y1][X1], \
20788N/A+ scaled, \
20788N/A+ src_x[X1], src_y[Y1], \
20788N/A+ src_x[X2] - src_x[X1], src_y[Y2] - src_y[Y1], \
20788N/A+ dest_x[X1], dest_y[Y1], \
20788N/A+ dest_x[X2] - dest_x[X1], dest_y[Y2] - dest_y[Y1]);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_NORTH_WEST)
20788N/A+ RENDER_COMPONENT (0, 1, 0, 1);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_NORTH)
20788N/A+ RENDER_COMPONENT (1, 2, 0, 1);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_NORTH_EAST)
20788N/A+ RENDER_COMPONENT (2, 3, 0, 1);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_WEST)
20788N/A+ RENDER_COMPONENT (0, 1, 1, 2);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_CENTER)
20788N/A+ RENDER_COMPONENT (1, 2, 1, 2);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_EAST)
20788N/A+ RENDER_COMPONENT (2, 3, 1, 2);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_SOUTH_WEST)
20788N/A+ RENDER_COMPONENT (0, 1, 2, 3);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_SOUTH)
20788N/A+ RENDER_COMPONENT (1, 2, 2, 3);
20788N/A+
20788N/A+ if (component_mask & COMPONENT_SOUTH_EAST)
20788N/A+ RENDER_COMPONENT (2, 3, 2, 3);
20788N/A+ }
20788N/A+
20788N/A+ return scaled;
20788N/A+ }
20788N/A+}
20788N/A+
20788N/A+void set_pseudo_transparent_bg (GtkWidget *window,
20788N/A+ GdkPixbuf *overlay,
20788N/A+ gint border_left,
20788N/A+ gint border_right,
20788N/A+ gint border_bottom,
20788N/A+ gint border_top)
20788N/A+{
20788N/A+ static GdkPixbuf *bkg = NULL;
20788N/A+ static int x = -1;
20788N/A+ static int y = -1;
20788N/A+ XID *pixmaps;
20788N/A+ GdkAtom prop_type;
20788N/A+ GdkPixmap *pixmap;
20788N/A+ GdkPixbuf *app_bkg, *tmp_bkg;
20788N/A+ GdkPixbuf *pixbuf_box;
20788N/A+ GdkPixbuf *scaled;
20788N/A+ GdkPixmap *bg_pixmap;
20788N/A+ int prop_size;
20788N/A+ GdkColormap *rcolormap;
20788N/A+ int width = 0;
20788N/A+ int height = 0;
20788N/A+ int new_x = 0;
20788N/A+ int new_y = 0;
20788N/A+ int count = 0;
20788N/A+ gboolean found_rootpmap = FALSE;
20788N/A+ GtkWidget *panel = NULL;
20788N/A+ GtkStyle *style;
20788N/A+ GdkWindow *root;
20788N/A+ GdkDisplay *dpy;
20788N/A+ GdkAtom pmap_id;
20788N/A+
20788N/A+ if (!overlay)
20788N/A+ return;
20788N/A+
20788N/A+ if (!bkg)
20788N/A+ {
20788N/A+ root = gdk_screen_get_root_window (gdk_drawable_get_screen (GDK_DRAWABLE(window->window)));
20788N/A+ dpy = gdk_drawable_get_display(GDK_DRAWABLE(root));
20788N/A+ pmap_id = gdk_x11_xatom_to_atom_for_display (dpy, gdk_x11_get_xatom_by_name_for_display(dpy,
20788N/A+ "_XROOTPMAP_ID"));
20788N/A+ while (!found_rootpmap && count <= 10000) /* wait until the prop is set, quick fix, better solution is to monitor */
20788N/A+ {
20788N/A+
20788N/A+ gdk_property_get(root, pmap_id, GDK_TARGET_PIXMAP,
20788N/A+ 0, INT_MAX - 3,
20788N/A+ FALSE,
20788N/A+ &prop_type, NULL, &prop_size,
20788N/A+ (guchar**)&pixmaps);
20788N/A+
20788N/A+
20788N/A+ if ((prop_type == GDK_TARGET_PIXMAP) &&
20788N/A+ (prop_size >= (int)sizeof(XID) &&
20788N/A+ (pixmaps != NULL)))
20788N/A+ {
20788N/A+ pixmap = gdk_pixmap_foreign_new_for_display(dpy, pixmaps[0]);
20788N/A+ g_free(pixmaps);
20788N/A+ found_rootpmap = TRUE;
20788N/A+ }
20788N/A+ else
20788N/A+ {
20788N/A+ /*struct timespec ts;
20788N/A+ ts.tv_nsec = 100;
20788N/A+ nanosleep (&ts, NULL);*/
20788N/A+ count++;
20788N/A+ }
20788N/A+ }
20788N/A+
20788N/A+ if (!found_rootpmap)
20788N/A+ return;
20788N/A+
20788N/A+ /* Tell GTK+ that this foreign pixmap shares the
20788N/A+ * root window's colormap. */
20788N/A+ rcolormap = gdk_drawable_get_colormap(root);
20788N/A+ if (gdk_drawable_get_colormap(pixmap) == NULL)
20788N/A+ {
20788N/A+ gdk_drawable_set_colormap(pixmap,
20788N/A+ rcolormap);
20788N/A+ }
20788N/A+
20788N/A+ /* Retrieve the pixmap's size. */
20788N/A+ gdk_error_trap_push();
20788N/A+ width = height = -1;
20788N/A+ gdk_drawable_get_size(pixmap, &width, &height);
20788N/A+ gdk_display_sync(gdk_drawable_get_display(GDK_DRAWABLE(root)));
20788N/A+ gdk_error_trap_pop();
20788N/A+
20788N/A+ /* If the pixmap gave us a valid size, retrieve its
20788N/A+ * contents. */
20788N/A+ if ((width > 0) && (height > 0)) {
20788N/A+ gdk_error_trap_push();
20788N/A+ bkg = gdk_pixbuf_get_from_drawable(NULL,
20788N/A+ pixmap,
20788N/A+ NULL,
20788N/A+ 0, 0,
20788N/A+ 0, 0,
20788N/A+ width, height);
20788N/A+ gdk_display_sync(gdk_drawable_get_display(GDK_DRAWABLE(root)));
20788N/A+ gdk_error_trap_pop();
20788N/A+ }
20788N/A+
20788N/A+ }
20788N/A+ /* get window pos */
20788N/A+ gdk_window_get_origin (window->window, &new_x, &new_y);
20788N/A+
20788N/A+ if (new_x == x && new_y == y) /* no change needed */
20788N/A+ return;
20788N/A+
20788N/A+ x = new_x;
20788N/A+ y = new_y;
20788N/A+
20788N/A+ /* y -= 14; */
20788N/A+
20788N/A+ /* position pixbuf according to window pos */
20788N/A+ gdk_window_get_geometry (window->window, NULL, NULL, &width, &height, NULL);
20788N/A+
20788N/A+ if (y > gdk_pixbuf_get_height (bkg) - height)
20788N/A+ y = gdk_pixbuf_get_height (bkg) - height;
20788N/A+ /*return; *//* panel popping up */
20788N/A+
20788N/A+ tmp_bkg = gdk_pixbuf_copy (bkg);
20788N/A+ app_bkg = gdk_pixbuf_new_subpixbuf (tmp_bkg, x,y,width, height);
20788N/A+
20788N/A+ scaled = constraint_scale (overlay,
20788N/A+ x,y,
20788N/A+ width, height,
20788N/A+ border_left, border_right, border_top, border_bottom);
20788N/A+ gdk_pixbuf_composite (scaled,
20788N/A+ app_bkg,
20788N/A+ 0,
20788N/A+ 0,
20788N/A+ width,
20788N/A+ height,
20788N/A+ 0.0,
20788N/A+ 0.0,
20788N/A+ 1.0,
20788N/A+ 1.0,
20788N/A+ GDK_INTERP_NEAREST,
20788N/A+ 255);
20788N/A+
20788N/A+ g_object_unref (scaled);
20788N/A+
20788N/A+ if (GDK_IS_PIXBUF(app_bkg)) {
20788N/A+ gdk_pixbuf_render_pixmap_and_mask_for_colormap(app_bkg,
20788N/A+ gtk_widget_get_colormap (window),
20788N/A+ &bg_pixmap, NULL,
20788N/A+ 0);
20788N/A+ g_object_unref(app_bkg);
20788N/A+ g_object_unref(tmp_bkg);
20788N/A+ }
20788N/A+
20788N/A+ style = gtk_style_copy (window->style);
20788N/A+ if (style->bg_pixmap[GTK_STATE_NORMAL])
20788N/A+ g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]);
20788N/A+ style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (bg_pixmap);
20788N/A+ gtk_widget_set_style (window, style);
20788N/A+ g_object_unref (style);
20788N/A+}
20788N/A+
20788N/Adiff -Nrup -x '*.orig' -x '*.rej' -x '*.*~' ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/branding.h gdm-2.30.4/gui/simple-greeter/branding.h
20788N/A--- ../SUNWgnome-display-mgr-2.30.4-clean/gdm-2.30.4/gui/simple-greeter/branding.h 1970-01-01 01:00:00.000000000 +0100
20788N/A+++ gdm-2.30.4/gui/simple-greeter/branding.h 2010-08-09 09:51:46.928416142 +0200
20788N/A@@ -0,0 +1,14 @@
20788N/A+#ifndef __BRANDING_H
20788N/A+#define __BRANDING_H
20788N/A+
20788N/A+#include <gtk/gtk.h>
20788N/A+
20788N/A+void set_pseudo_transparent_bg (GtkWidget *window,
20788N/A+ GdkPixbuf *overlay,
20788N/A+ gint border_left,
20788N/A+ gint border_right,
20788N/A+ gint border_bottom,
20788N/A+ gint border_top);
20788N/A+
20788N/A+
20788N/A+#endif /* __BRANDING_H */
20788N/A--- gdm-2.30.4/gui/simple-greeter/gdm-greeter-login-window.c-orig 2011-07-08 15:25:28.708843509 -0500
20788N/A+++ gdm-2.30.4/gui/simple-greeter/gdm-greeter-login-window.c 2011-07-08 15:30:35.194615663 -0500
20788N/A@@ -72,6 +72,8 @@
20788N/A #define PW_ENTRY_SIZE GDM_MAX_PASS
20788N/A #endif
20788N/A
20788N/A+#include "branding.h"
20788N/A+
20788N/A #define CK_NAME "org.freedesktop.ConsoleKit"
20788N/A #define CK_PATH "/org/freedesktop/ConsoleKit"
20788N/A #define CK_INTERFACE "org.freedesktop.ConsoleKit"
20788N/A@@ -1699,6 +1701,7 @@ static const char *known_etc_info_files
20788N/A "mandriva-release",
20788N/A "slackware-version",
20788N/A "system-release",
20788N/A+ "release",
20788N/A NULL
20788N/A };
20788N/A
20788N/A@@ -1850,6 +1853,7 @@ load_theme (GdmGreeterLoginWindow *login
20788N/A GtkWidget *button;
20788N/A GtkWidget *box;
20788N/A GtkWidget *image;
20788N/A+ GdkColor color;
20788N/A GError* error = NULL;
20788N/A
20788N/A gdm_profile_start (NULL);
20788N/A@@ -1878,10 +1882,9 @@ load_theme (GdmGreeterLoginWindow *login
20788N/A
20788N/A g_debug ("GdmGreeterLoginWindow: Got greeter logo '%s'",
20788N/A icon_name ? icon_name : "(null)");
20788N/A- if (icon_name != NULL) {
20788N/A- gtk_image_set_from_icon_name (GTK_IMAGE (image),
20788N/A- icon_name,
20788N/A- GTK_ICON_SIZE_DIALOG);
20788N/A+ if (icon_name != NULL) {
20788N/A+ gtk_image_set_from_file (GTK_IMAGE (image),
20788N/A+ UIDIR "/" "logo.png");
20788N/A g_free (icon_name);
20788N/A }
20788N/A }
20788N/A@@ -2093,6 +2096,33 @@ update_banner_message (GdmGreeterLoginWi
20788N/A }
20788N/A }
20788N/A
20788N/A+static GdkPixbuf *
20788N/A+get_overlay_pb ()
20788N/A+{
20788N/A+ static GdkPixbuf *pb = NULL;
20788N/A+ if (!pb)
20788N/A+ pb = gdk_pixbuf_new_from_file(UIDIR "/" "box.png",NULL);
20788N/A+ return pb;
20788N/A+}
20788N/A+
20788N/A+static gboolean
20788N/A+configure_function (GtkWidget *widget,
20788N/A+ gpointer user_data)
20788N/A+{
20788N/A+ set_pseudo_transparent_bg (widget, get_overlay_pb (), 5, 5,60 ,60);
20788N/A+ return FALSE;
20788N/A+}
20788N/A+
20788N/A+static gboolean
20788N/A+map_function (GtkWidget *widget,
20788N/A+ GdkEvent *event,
20788N/A+ gpointer user_data)
20788N/A+{
20788N/A+ set_pseudo_transparent_bg (widget, get_overlay_pb (), 5, 5,60 ,60);
20788N/A+ return FALSE;
20788N/A+}
20788N/A+
20788N/A+
20788N/A static GObject *
20788N/A gdm_greeter_login_window_constructor (GType type,
20788N/A guint n_construct_properties,
20788N/A@@ -2106,10 +2136,17 @@ gdm_greeter_login_window_constructor (GT
20788N/A n_construct_properties,
20788N/A construct_properties));
20788N/A
20788N/A+ g_signal_connect (login_window, "map", G_CALLBACK (map_function), login_window);
20788N/A+ g_signal_connect (login_window, "configure_event", G_CALLBACK (configure_function), login_window);
20788N/A+
20788N/A
20788N/A load_theme (login_window);
20788N/A update_banner_message (login_window);
20788N/A
20788N/A+ gtk_frame_set_shadow_type(GTK_FRAME (gtk_builder_get_object (login_window->priv->builder, "window-frame")), GTK_SHADOW_NONE);
20788N/A+ gtk_widget_realize (GTK_WIDGET (login_window));
20788N/A+ gdk_window_set_back_pixmap (GTK_WIDGET (login_window)->window, NULL, FALSE);
20788N/A+
20788N/A gdm_profile_end (NULL);
20788N/A
20788N/A return G_OBJECT (login_window);
20788N/A--- gdm-2.30.4/gui/simple-greeter/gdm-greeter-panel.c-orig 2011-07-08 15:25:44.178191359 -0500
20788N/A+++ gdm-2.30.4/gui/simple-greeter/gdm-greeter-panel.c 2011-07-08 15:25:59.109863118 -0500
20788N/A@@ -64,6 +64,8 @@
20788N/A #define KEY_DISABLE_RESTART_BUTTONS "/apps/gdm/simple-greeter/disable_restart_buttons"
20788N/A #define KEY_NOTIFICATION_AREA_PADDING "/apps/notification_area_applet/prefs/padding"
20788N/A
20788N/A+#include "branding.h"
20788N/A+
20788N/A #define GDM_GREETER_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_PANEL, GdmGreeterPanelPrivate))
20788N/A
20788N/A struct GdmGreeterPanelPrivate
20788N/A@@ -968,6 +970,32 @@ add_battery_menu (GdmGreeterPanel *panel
20788N/A panel->priv->power_menubar_item = item;
20788N/A }
20788N/A
20788N/A+static GdkPixbuf *
20788N/A+get_overlay_pb ()
20788N/A+{
20788N/A+static GdkPixbuf *pb = NULL;
20788N/A+ if (!pb)
20788N/A+ pb = gdk_pixbuf_new_from_file(UIDIR "/" "bottom-panel-image-gdm.png",NULL);
20788N/A+ return pb;
20788N/A+}
20788N/A+
20788N/A+static gboolean
20788N/A+configure_function (GtkWidget *widget,
20788N/A+ gpointer user_data)
20788N/A+{
20788N/A+ set_pseudo_transparent_bg (widget, get_overlay_pb (), 0, 0, 5, 0);
20788N/A+ return FALSE;
20788N/A+}
20788N/A+
20788N/A+static gboolean
20788N/A+map_function (GtkWidget *widget,
20788N/A+ GdkEvent *event,
20788N/A+ gpointer user_data)
20788N/A+{
20788N/A+ set_pseudo_transparent_bg (widget, get_overlay_pb (), 0, 0, 5, 0);
20788N/A+ return FALSE;
20788N/A+}
20788N/A+
20788N/A static void
20788N/A setup_panel (GdmGreeterPanel *panel)
20788N/A {
20788N/A@@ -1045,6 +1073,9 @@ setup_panel (GdmGreeterPanel *panel)
20788N/A panel);
20788N/A
20788N/A gdm_profile_end (NULL);
20788N/A+
20788N/A+ g_signal_connect (panel, "map", G_CALLBACK (map_function), panel);
20788N/A+ g_signal_connect (panel, "configure_event", G_CALLBACK (configure_function), panel);
20788N/A }
20788N/A
20788N/A static GObject *