summaryrefslogtreecommitdiff
path: root/gui/greeter/greeter_parser.c
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2006-02-21 22:16:36 +0000
committerBrian Cameron <bcameron@src.gnome.org>2006-02-21 22:16:36 +0000
commitd8d6d81de06fe4389b37caf42fec36bd0fd430fe (patch)
treef7b2c15ab28542c98cd425dacf63bcc63656bd1f /gui/greeter/greeter_parser.c
parente28a2165b418a3ae0f05641ff6eebd1f0d9ba12a (diff)
downloadgdm-d8d6d81de06fe4389b37caf42fec36bd0fd430fe.tar.gz
Add new "gtk-theme" property to <greeter> tag theme xml format, so the
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.
Diffstat (limited to 'gui/greeter/greeter_parser.c')
-rw-r--r--gui/greeter/greeter_parser.c23
1 files changed, 22 insertions, 1 deletions
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);