summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--gui/greeter/greeter_parser.c23
2 files changed, 32 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b1051715..97c9e253 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-02-21 Brian Cameron <brian.cameron@sun.com>
+
+ * gui/greeter/greeter_parser.c: Add new "gtk-theme" property
+ to <greeter> tag theme xml format, so the theme can specify a
+ GtkTheme to be used for gdmgreeter. This allows theming of
+ the "Options" menu and the entry field, and any other GTK+
+ widgets used by gdmgreeter. This also makes it possible to
+ create a11y themes (HighContrast, LowContrast, etc.) themes
+ for gdmgreeter.
+
2006-02-16 Brian Cameron <brian.cameron@sun.com>
* gui/greeter/greeter.c, gui/greeter/greeter_item_ulist.c: Fix
diff --git a/gui/greeter/greeter_parser.c b/gui/greeter/greeter_parser.c
index 708bbf97..b8d05be2 100644
--- a/gui/greeter/greeter_parser.c
+++ b/gui/greeter/greeter_parser.c
@@ -1636,9 +1636,10 @@ greeter_parse (const char *file, const char *datadir,
GreeterItemInfo *root;
xmlDocPtr doc;
xmlNodePtr node;
+ xmlChar *prop;
gboolean res;
GList *items;
-
+
/* FIXME: EVIL! GLOBAL! */
g_free (file_search_path);
file_search_path = g_strdup (datadir);
@@ -1684,6 +1685,26 @@ greeter_parse (const char *file, const char *datadir,
return NULL;
}
+ /*
+ * The gtk-theme property specifies a theme specific gtk-theme to use
+ */
+ prop = xmlGetProp (node, (const xmlChar *) "gtk-theme");
+ if (prop)
+ {
+ gchar *theme_dir;
+
+ /*
+ * It might be nice if we allowed this property to also supply a gtkrc file
+ * that could be included in the theme. Perhaps we should check first in
+ * the theme directory for a gtkrc file by the provided name and use that
+ * if found.
+ */
+ 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);
+
+ xmlFree (prop);
+ }
item_hash = g_hash_table_new ((GHashFunc)greeter_info_id_hash,
(GEqualFunc)greeter_info_id_equal);