[gtk] cssprovider: Export correct API



commit 1aa16106115e957dadf2f23a7a8ff1699bd30b7d
Author: Benjamin Otte <otte redhat com>
Date:   Thu Apr 18 02:05:58 2019 +0200

    cssprovider: Export correct API
    
    gtk_css_provider_get_named() is the old GTK3 style API to load themes.
    
    Instead, export the function we currently use,
    gtk_css_provider_load_named().
    
    As a side effect we allow people to load a theme as often as they want
    without conflicting with GTK's theme.

 docs/reference/gtk/gtk4-sections.txt |  2 +-
 gtk/gtkcssprovider.c                 | 54 +++++-------------------------------
 gtk/gtkcssprovider.h                 |  5 ++--
 gtk/gtkcssproviderprivate.h          |  4 ---
 gtk/gtksettings.c                    |  5 ++--
 5 files changed, 14 insertions(+), 56 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index 458085c57e..96d08652dd 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -5076,7 +5076,7 @@ gtk_border_get_type
 <FILE>gtkcssprovider</FILE>
 <TITLE>GtkCssProvider</TITLE>
 GtkCssProvider
-gtk_css_provider_get_named
+gtk_css_provider_load_named
 gtk_css_provider_load_from_data
 gtk_css_provider_load_from_file
 gtk_css_provider_load_from_path
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 1e841fb2f3..50a7bf80a4 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -1342,7 +1342,7 @@ _gtk_css_find_theme (const gchar *name,
 }
 
 /**
- * _gtk_css_provider_load_named:
+ * gtk_css_provider_load_named:
  * @provider: a #GtkCssProvider
  * @name: A theme name
  * @variant: (allow-none): variant to load, for example, "dark", or
@@ -1351,12 +1351,12 @@ _gtk_css_find_theme (const gchar *name,
  * Loads a theme from the usual theme paths. The actual process of
  * finding the theme might change between releases, but it is
  * guaranteed that this function uses the same mechanism to load the
- * theme than GTK uses for loading its own theme.
+ * theme that GTK uses for loading its own theme.
  **/
 void
-_gtk_css_provider_load_named (GtkCssProvider *provider,
-                              const gchar    *name,
-                              const gchar    *variant)
+gtk_css_provider_load_named (GtkCssProvider *provider,
+                             const gchar    *name,
+                             const gchar    *variant)
 {
   gchar *path;
   gchar *resource_path;
@@ -1413,57 +1413,17 @@ _gtk_css_provider_load_named (GtkCssProvider *provider,
       if (variant)
         {
           /* If there was a variant, try without */
-          _gtk_css_provider_load_named (provider, name, NULL);
+          gtk_css_provider_load_named (provider, name, NULL);
         }
       else
         {
           /* Worst case, fall back to the default */
           g_return_if_fail (!g_str_equal (name, DEFAULT_THEME_NAME)); /* infloop protection */
-          _gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, NULL);
+          gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, NULL);
         }
     }
 }
 
-/**
- * gtk_css_provider_get_named:
- * @name: A theme name
- * @variant: (allow-none): variant to load, for example, "dark", or
- *     %NULL for the default
- *
- * Loads a theme from the usual theme paths
- *
- * Returns: (transfer none): a #GtkCssProvider with the theme loaded.
- *     This memory is owned by GTK+, and you must not free it.
- */
-GtkCssProvider *
-gtk_css_provider_get_named (const gchar *name,
-                            const gchar *variant)
-{
-  static GHashTable *themes = NULL;
-  GtkCssProvider *provider;
-  gchar *key;
-
-  if (variant == NULL)
-    key = g_strdup (name);
-  else
-    key = g_strconcat (name, "-", variant, NULL);
-  if (G_UNLIKELY (!themes))
-    themes = g_hash_table_new (g_str_hash, g_str_equal);
-
-  provider = g_hash_table_lookup (themes, key);
-  
-  if (!provider)
-    {
-      provider = gtk_css_provider_new ();
-      _gtk_css_provider_load_named (provider, name, variant);
-      g_hash_table_insert (themes, g_strdup (key), provider);
-    }
-  
-  g_free (key);
-
-  return provider;
-}
-
 static int
 compare_properties (gconstpointer a, gconstpointer b, gpointer style)
 {
diff --git a/gtk/gtkcssprovider.h b/gtk/gtkcssprovider.h
index 9f05714173..051305e573 100644
--- a/gtk/gtkcssprovider.h
+++ b/gtk/gtkcssprovider.h
@@ -78,8 +78,9 @@ void             gtk_css_provider_load_from_resource (GtkCssProvider *css_provid
                                                       const gchar    *resource_path);
 
 GDK_AVAILABLE_IN_ALL
-GtkCssProvider * gtk_css_provider_get_named (const gchar *name,
-                                             const gchar *variant);
+void             gtk_css_provider_load_named     (GtkCssProvider  *self,
+                                                  const char      *name,
+                                                  const char      *variant);
 
 G_END_DECLS
 
diff --git a/gtk/gtkcssproviderprivate.h b/gtk/gtkcssproviderprivate.h
index bca8e79464..e345d00120 100644
--- a/gtk/gtkcssproviderprivate.h
+++ b/gtk/gtkcssproviderprivate.h
@@ -26,10 +26,6 @@ gchar *_gtk_get_theme_dir (void);
 
 const gchar *_gtk_css_provider_get_theme_dir (GtkCssProvider *provider);
 
-void   _gtk_css_provider_load_named    (GtkCssProvider *provider,
-                                        const gchar    *name,
-                                        const gchar    *variant);
-
 void   gtk_css_provider_set_keep_css_sections (void);
 
 G_END_DECLS
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 354e70a083..79282b1804 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -2215,8 +2215,9 @@ settings_update_theme (GtkSettings *settings)
 
   get_theme_name (settings, &theme_name, &theme_variant);
 
-  _gtk_css_provider_load_named (priv->theme_provider,
-                                theme_name, theme_variant);
+  gtk_css_provider_load_named (priv->theme_provider,
+                               theme_name,
+                               theme_variant);
 
   /* reload per-theme settings */
   theme_dir = _gtk_css_provider_get_theme_dir (priv->theme_provider);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]