[gnome-text-editor] app: use scheme metadata for light/dark variants



commit 8ce952c46d43e780956a6305a7c65a10865b69fd
Author: Christian Hergert <chergert redhat com>
Date:   Thu Dec 2 12:36:32 2021 -0800

    app: use scheme metadata for light/dark variants
    
    If the scheme provides metadata, we want to use that instead of the
    -light/-dark guessing.
    
    Related #139

 src/editor-application.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
---
diff --git a/src/editor-application.c b/src/editor-application.c
index 5d63b9f..6e615c0 100644
--- a/src/editor-application.c
+++ b/src/editor-application.c
@@ -489,12 +489,26 @@ _gtk_source_style_scheme_get_variant (GtkSourceStyleScheme *scheme,
   GtkSourceStyleSchemeManager *style_scheme_manager;
   GtkSourceStyleScheme *ret;
   g_autoptr(GString) str = NULL;
+  g_autofree char *key = NULL;
+  const char *mapping;
 
   g_return_val_if_fail (GTK_SOURCE_IS_STYLE_SCHEME (scheme), NULL);
   g_return_val_if_fail (g_strcmp0 (variant, "light") == 0 ||
                         g_strcmp0 (variant, "dark") == 0, NULL);
 
   style_scheme_manager = gtk_source_style_scheme_manager_get_default ();
+
+  /* If the scheme provides "light-variant" or "dark-variant" metadata,
+   * we will prefer those if the variant is available.
+   */
+  key = g_strdup_printf ("%s-variant", variant);
+  if ((mapping = gtk_source_style_scheme_get_metadata (scheme, key)))
+    {
+      if ((ret = gtk_source_style_scheme_manager_get_scheme (style_scheme_manager, mapping)))
+        return ret;
+    }
+
+  /* Try to find a match by replacing -light/-dark with @variant */
   str = g_string_new (gtk_source_style_scheme_get_id (scheme));
 
   if (g_str_has_suffix (str->str, "-light"))


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