diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | appearance/mb-appearance.c | 56 |
2 files changed, 42 insertions, 19 deletions
@@ -1,6 +1,11 @@ 2008-09-25 Ross Burton <ross@linux.intel.com> * appearance/mb-appearance.c: + Handle Metacity themes too. + +2008-09-25 Ross Burton <ross@linux.intel.com> + + * appearance/mb-appearance.c: Name the matchbox theme column more appropriately. 2007-11-14 Ross Burton <ross@openedhand.com> diff --git a/appearance/mb-appearance.c b/appearance/mb-appearance.c index d8c2a42..34640b4 100644 --- a/appearance/mb-appearance.c +++ b/appearance/mb-appearance.c @@ -35,6 +35,7 @@ enum { COL_NAME, /* Human readable name */ COL_GTK, /* GTK+ theme */ COL_MATCHBOX, /* Matchbox theme */ + COL_METACITY, /* Metacity theme */ COL_ICON, /* Icon theme */ COL_COUNT, /* Marker value */ }; @@ -46,7 +47,8 @@ enum { /* GConf keys */ #define INTERFACE_DIR "/desktop/poky/interface" #define GTK_THEME_KEY INTERFACE_DIR "/theme" -#define WM_THEME_KEY INTERFACE_DIR "/wm_theme" +#define MATCHBOX_THEME_KEY INTERFACE_DIR "/matchbox_theme" +#define METACITY_THEME_KEY "/apps/metacity/general/theme" #define ICON_THEME_KEY INTERFACE_DIR "/icon_theme" #define FONT_KEY INTERFACE_DIR "/font_name" #define HANDED_KEY INTERFACE_DIR "/gtk-scrolled-window-position" @@ -76,7 +78,7 @@ scan_data_dir (const char *path) while ((entry = g_dir_read_name (dir)) != NULL) { GKeyFile *keys; - char *name, *gtk_theme, *wm_theme, *icon_theme; + char *name, *gtk_theme, *metacity_theme, *matchbox_theme, *icon_theme; GtkTreeIter iter; keys = NULL; @@ -105,19 +107,22 @@ scan_data_dir (const char *path) name = g_strdup (entry); gtk_theme = g_key_file_get_string (keys, METATHEME, "GtkTheme", NULL); - wm_theme = g_key_file_get_string (keys, METATHEME, "MatchboxTheme", NULL); + matchbox_theme = g_key_file_get_string (keys, METATHEME, "MatchboxTheme", NULL); + metacity_theme = g_key_file_get_string (keys, METATHEME, "MetacityTheme", NULL); icon_theme = g_key_file_get_string (keys, METATHEME, "IconTheme", NULL); gtk_list_store_insert_with_values (theme_store, &iter, 0, COL_NAME, name, COL_GTK, gtk_theme, - COL_MATCHBOX, wm_theme, + COL_MATCHBOX, matchbox_theme, + COL_METACITY, metacity_theme, COL_ICON, icon_theme, -1); g_free (name); g_free (gtk_theme); - g_free (wm_theme); + g_free (matchbox_theme); + g_free (metacity_theme); g_free (icon_theme); done: @@ -179,7 +184,8 @@ select_current_theme (GtkComboBox *combo) GtkTreeModel *model; GtkTreeIter iter; char *current_gtk_theme, *gtk_theme; - char *current_wm_theme, *wm_theme; + char *current_matchbox_theme, *matchbox_theme; + char *current_metacity_theme, *metacity_theme; char *current_icon_theme, *icon_theme; gboolean done = FALSE; @@ -191,27 +197,30 @@ select_current_theme (GtkComboBox *combo) return; current_gtk_theme = gconf_client_get_string (gconf, GTK_THEME_KEY, NULL); - current_wm_theme = gconf_client_get_string (gconf, WM_THEME_KEY, NULL); + current_matchbox_theme = gconf_client_get_string (gconf, MATCHBOX_THEME_KEY, NULL); + current_metacity_theme = gconf_client_get_string (gconf, METACITY_THEME_KEY, NULL); current_icon_theme = gconf_client_get_string (gconf, ICON_THEME_KEY, NULL); do { - gtk_theme = wm_theme = icon_theme = NULL; + gtk_theme = matchbox_theme = icon_theme = NULL; gtk_tree_model_get (model, &iter, COL_GTK, >k_theme, - COL_MATCHBOX, &wm_theme, + COL_MATCHBOX, &matchbox_theme, + COL_METACITY, &metacity_theme, COL_ICON, &icon_theme, -1); if (matches (current_gtk_theme, gtk_theme) && - matches (current_wm_theme, wm_theme) && + matches (current_matchbox_theme, matchbox_theme) && + matches (current_metacity_theme, metacity_theme) && matches (current_icon_theme, icon_theme)) { gtk_combo_box_set_active_iter (combo, &iter); done = TRUE; } g_free (gtk_theme); - g_free (wm_theme); + g_free (matchbox_theme); g_free (icon_theme); } while (!done && gtk_tree_model_iter_next (model, &iter)); @@ -221,7 +230,7 @@ select_current_theme (GtkComboBox *combo) } g_free (current_gtk_theme); - g_free (current_wm_theme); + g_free (current_matchbox_theme); g_free (current_icon_theme); } @@ -233,7 +242,7 @@ on_theme_set (GtkComboBox *combo, gpointer user_data) { GtkTreeModel *model; GtkTreeIter iter; - char *gtk_theme = NULL, *wm_theme = NULL, *icon_theme = NULL; + char *gtk_theme = NULL, *matchbox_theme = NULL, *metacity_theme = NULL, *icon_theme = NULL; if (!gtk_combo_box_get_active_iter (combo, &iter)) return; @@ -242,7 +251,8 @@ on_theme_set (GtkComboBox *combo, gpointer user_data) gtk_tree_model_get (model, &iter, COL_GTK, >k_theme, - COL_MATCHBOX, &wm_theme, + COL_MATCHBOX, &matchbox_theme, + COL_METACITY, &metacity_theme, COL_ICON, &icon_theme, -1); @@ -251,10 +261,15 @@ on_theme_set (GtkComboBox *combo, gpointer user_data) else gconf_client_unset (gconf, GTK_THEME_KEY, NULL); - if (wm_theme) - gconf_client_set_string (gconf, WM_THEME_KEY, wm_theme, NULL); + if (matchbox_theme) + gconf_client_set_string (gconf, MATCHBOX_THEME_KEY, matchbox_theme, NULL); else - gconf_client_unset (gconf, WM_THEME_KEY, NULL); + gconf_client_unset (gconf, MATCHBOX_THEME_KEY, NULL); + + if (metacity_theme) + gconf_client_set_string (gconf, METACITY_THEME_KEY, metacity_theme, NULL); + else + gconf_client_unset (gconf, METACITY_THEME_KEY, NULL); if (icon_theme) gconf_client_set_string (gconf, ICON_THEME_KEY, icon_theme, NULL); @@ -262,7 +277,8 @@ on_theme_set (GtkComboBox *combo, gpointer user_data) gconf_client_unset (gconf, ICON_THEME_KEY, NULL); g_free (gtk_theme); - g_free (wm_theme); + g_free (matchbox_theme); + g_free (metacity_theme); g_free (icon_theme); } @@ -293,7 +309,8 @@ on_gconf_value_changed (GConfClient* client, const gchar* key, GConfValue* value return; if (strcmp (key, GTK_THEME_KEY) == 0 || - strcmp (key, WM_THEME_KEY) == 0 || + strcmp (key, MATCHBOX_THEME_KEY) == 0 || + strcmp (key, METACITY_THEME_KEY) == 0 || strcmp (key, ICON_THEME_KEY) == 0) { select_current_theme (GTK_COMBO_BOX (theme_combo)); } else if (strcmp (key, FONT_KEY) == 0) { @@ -359,6 +376,7 @@ main (int argc, char **argv) { G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (theme_store), COL_NAME, GTK_SORT_ASCENDING); |