Blob Blame Raw
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);
 		}
 	}