diff options
author | Brian Cameron <brian.cameron@sun.com> | 2006-02-21 22:16:36 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2006-02-21 22:16:36 +0000 |
commit | d8d6d81de06fe4389b37caf42fec36bd0fd430fe (patch) | |
tree | f7b2c15ab28542c98cd425dacf63bcc63656bd1f /gui/greeter/greeter_parser.c | |
parent | e28a2165b418a3ae0f05641ff6eebd1f0d9ba12a (diff) | |
download | gdm-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.c | 23 |
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); |