Index: gui/gdmuser.c =================================================================== --- gui/gdmuser.c (revision 4608) +++ gui/gdmuser.c (working copy) @@ -137,6 +137,20 @@ gdk_pixbuf_loader_close (loader, NULL); img = gdk_pixbuf_loader_get_pixbuf (loader); + + /* if we have a defface, force all faces to be this size */ + if (img != NULL && defface != NULL) { + GdkPixbuf *scaled; + scaled = gdk_pixbuf_scale_simple (img, + gdk_pixbuf_get_width (defface), + gdk_pixbuf_get_height (defface), + GDK_INTERP_BILINEAR); + if (scaled != NULL) { + g_object_unref (G_OBJECT (img)); + img = scaled; + } + } + if (img != NULL) g_object_ref (G_OBJECT (img)); Index: gui/greeter/greeter_parser.c =================================================================== --- gui/greeter/greeter_parser.c (revision 4608) +++ gui/greeter/greeter_parser.c (working copy) @@ -1026,6 +1026,19 @@ xmlFree (prop); } + prop = xmlGetProp (node,(const xmlChar *) "labelfgcolor"); + if (prop) + { + if G_UNLIKELY (!parse_color ((char *) prop, &color, error)) { + info->data.list.label_fgcolor = NULL; + return FALSE; + } else { + info->data.list.label_fgcolor = g_strdup ((char *) prop); + } + + xmlFree (prop); + } + return TRUE; } @@ -1843,11 +1856,25 @@ */ theme_dir = g_strdup_printf ("%s/%s", gtk_rc_get_theme_dir (), (char *) prop); if (g_file_test (theme_dir, G_FILE_TEST_IS_DIR)) - gdm_set_theme ((char *) prop); + gdm_set_theme ((char *) prop); xmlFree (prop); } + /* + * The gtkrc property specifies a theme specific gtkrc to use + */ + prop = xmlGetProp (node, (const xmlChar *) "gtkrc"); + if (prop != NULL) { + char *s; + s = g_strdup_printf ("%s/%s", file_search_path, (char *) prop); + if (g_file_test (s, G_FILE_TEST_IS_REGULAR)) { + gtk_rc_parse (s); + } + g_free (s); + xmlFree (prop); + } + item_hash = g_hash_table_new ((GHashFunc)greeter_info_id_hash, (GEqualFunc)greeter_info_id_equal); Index: gui/greeter/greeter_item.h =================================================================== --- gui/greeter/greeter_item.h (revision 4608) +++ gui/greeter/greeter_item.h (working copy) @@ -177,6 +177,7 @@ struct { char *icon_color; char *label_color; + char *label_fgcolor; /* If this is a custom list, then these are the items to pick from */ GList *items; Index: gui/greeter/greeter_item_ulist.c =================================================================== --- gui/greeter/greeter_item_ulist.c (revision 4608) +++ gui/greeter/greeter_item_ulist.c (working copy) @@ -322,6 +322,10 @@ if (info->data.list.label_color != NULL) g_object_set (cell, "background", info->data.list.label_color, NULL); + + if (info->data.list.label_fgcolor != NULL) + g_object_set (cell, "foreground", + info->data.list.label_fgcolor, NULL); } }