From b16b44f1aeb5e37ef69e30bd187110c7a6fa2f4e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 12 Apr 2020 00:29:05 -0400 Subject: [PATCH] inspector: Use theme apis We can now use gtk_theme_get_available_themes instead of our own copy of that code. --- gtk/inspector/visual.c | 80 ++++------------------------------------- gtk/inspector/visual.ui | 1 - 2 files changed, 7 insertions(+), 74 deletions(-) diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c index debcc768bd..2389a6e7b6 100644 --- a/gtk/inspector/visual.c +++ b/gtk/inspector/visual.c @@ -42,6 +42,7 @@ #include "gskrendererprivate.h" #include "gtknative.h" #include "gtkbinlayout.h" +#include "gtktheme.h" #include "fallback-c89.c" @@ -473,30 +474,6 @@ focus_activate (GtkSwitch *sw, redraw_everything (); } -static void -fill_gtk (const gchar *path, - GHashTable *t) -{ - const gchar *dir_entry; - GDir *dir = g_dir_open (path, 0, NULL); - - if (!dir) - return; - - while ((dir_entry = g_dir_read_name (dir))) - { - gchar *filename = g_build_filename (path, dir_entry, "gtk-4.0", "gtk.css", NULL); - - if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) && - !g_hash_table_contains (t, dir_entry)) - g_hash_table_add (t, g_strdup (dir_entry)); - - g_free (filename); - } - - g_dir_close (dir); -} - static gchar* get_data_path (const gchar *subdir) { @@ -514,57 +491,14 @@ get_data_path (const gchar *subdir) static void init_theme (GtkInspectorVisual *vis) { - GHashTable *t; - GHashTableIter iter; - gchar *theme, *path; - gchar **builtin_themes; - GList *list, *l; - guint i; - const gchar * const *dirs; + char **themes; + int i; - t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - /* Builtin themes */ - builtin_themes = g_resources_enumerate_children ("/org/gtk/libgtk/theme", 0, NULL); - for (i = 0; builtin_themes[i] != NULL; i++) - { - if (g_str_has_suffix (builtin_themes[i], "/")) - g_hash_table_add (t, g_strndup (builtin_themes[i], strlen (builtin_themes[i]) - 1)); - } - g_strfreev (builtin_themes); + themes = gtk_theme_get_available_themes (); + for (i = 0; themes[i]; i++) + gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (vis->priv->theme_combo), themes[i], themes[i]); - path = _gtk_get_theme_dir (); - fill_gtk (path, t); - g_free (path); - - path = g_build_filename (g_get_user_data_dir (), "themes", NULL); - fill_gtk (path, t); - g_free (path); - - path = g_build_filename (g_get_home_dir (), ".themes", NULL); - fill_gtk (path, t); - g_free (path); - - dirs = g_get_system_data_dirs (); - for (i = 0; dirs[i]; i++) - { - path = g_build_filename (dirs[i], "themes", NULL); - fill_gtk (path, t); - g_free (path); - } - - list = NULL; - g_hash_table_iter_init (&iter, t); - while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL)) - list = g_list_insert_sorted (list, theme, (GCompareFunc)strcmp); - - for (l = list; l; l = l->next) - { - theme = l->data; - gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (vis->priv->theme_combo), theme, theme); - } - - g_list_free (list); - g_hash_table_destroy (t); + g_strfreev (themes); g_object_bind_property (gtk_settings_get_for_display (vis->priv->display), "gtk-theme-name", diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui index 10b4f4856e..8658f8e399 100644 --- a/gtk/inspector/visual.ui +++ b/gtk/inspector/visual.ui @@ -663,7 +663,6 @@ -