[gtk/theme-reorg] Make theme fallback working with the new names



commit fd329e0ec582d7562f444bf792909906d41a7e5a
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Apr 1 22:02:38 2021 -0400

    Make theme fallback working with the new names
    
    Since we are likely going to see theme names like
    Adwaita and HighContrast, make fallback work as follows:
    
    Adwaita -> Default
    Adwaita:dark -> Default:dark
    HighContrast -> Default:hc
    HighContrast:dark -> Default:hc-dark
    HighContrastInverse -> Default:hc-dark
    
    Other themes will fall back to Default, as before.

 gtk/gtkcssprovider.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 43882cf385..56b243f1c1 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -1385,16 +1385,20 @@ gtk_css_provider_load_named (GtkCssProvider *provider,
   else
     {
       /* Things failed! Fall back! Fall back! */
-
-      if (variant)
+      if (strcmp (name, "HighContrast") == 0)
         {
-          /* If there was a variant, try without */
-          gtk_css_provider_load_named (provider, name, NULL);
+          if (g_strcmp0 (variant, "dark") == 0)
+            gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, "hc-dark");
+          else
+            gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, "hc");
         }
+      else if (strcmp (name, "HighConstrastInverse") == 0)
+        gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, "hc-dark");
+      else if (strcmp (name, DEFAULT_THEME_NAME) != 0)
+        gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, variant);
       else
         {
-          /* Worst case, fall back to the default */
-          g_return_if_fail (!g_str_equal (name, DEFAULT_THEME_NAME)); /* infloop protection */
+          g_return_if_fail (variant != NULL);
           gtk_css_provider_load_named (provider, DEFAULT_THEME_NAME, NULL);
         }
     }


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