[gtk/drop-define-color: 3/3] Drop @define-color from the css machinery




commit b5808192f669a33fa4f3c833c9d47f742da71930
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Sep 14 21:23:25 2022 -0400

    Drop @define-color from the css machinery
    
    Stop parsing @define-color rules, and drop related
    apis and css value implementations.

 gtk/gtkcsscolorvalue.c        | 30 ----------------
 gtk/gtkcssprovider.c          | 79 -------------------------------------------
 gtk/gtkstylecascade.c         | 26 --------------
 gtk/gtkstylecontext.c         |  6 +---
 gtk/gtkstyleprovider.c        | 20 -----------
 gtk/gtkstyleproviderprivate.h |  4 ---
 6 files changed, 1 insertion(+), 164 deletions(-)
---
diff --git a/gtk/gtkcsscolorvalue.c b/gtk/gtkcsscolorvalue.c
index 5430489401..2ce0be2273 100644
--- a/gtk/gtkcsscolorvalue.c
+++ b/gtk/gtkcsscolorvalue.c
@@ -28,7 +28,6 @@
 
 typedef enum {
   COLOR_TYPE_LITERAL,
-  COLOR_TYPE_NAME,
   COLOR_TYPE_SHADE,
   COLOR_TYPE_ALPHA,
   COLOR_TYPE_MIX,
@@ -69,9 +68,6 @@ gtk_css_value_color_free (GtkCssValue *color)
 
   switch (color->type)
     {
-    case COLOR_TYPE_NAME:
-      g_free (color->sym_col.name);
-      break;
     case COLOR_TYPE_SHADE:
       _gtk_css_value_unref (color->sym_col.shade.color);
       break;
@@ -187,8 +183,6 @@ gtk_css_value_color_equal (const GtkCssValue *value1,
     {
     case COLOR_TYPE_LITERAL:
       return gdk_rgba_equal (&value1->sym_col.rgba, &value2->sym_col.rgba);
-    case COLOR_TYPE_NAME:
-      return g_str_equal (value1->sym_col.name, value2->sym_col.name);
     case COLOR_TYPE_SHADE:
       return value1->sym_col.shade.factor == value2->sym_col.shade.factor &&
              _gtk_css_value_equal (value1->sym_col.shade.color,
@@ -233,10 +227,6 @@ gtk_css_value_color_print (const GtkCssValue *value,
         g_free (s);
       }
       break;
-    case COLOR_TYPE_NAME:
-      g_string_append (string, "@");
-      g_string_append (string, value->sym_col.name);
-      break;
     case COLOR_TYPE_SHADE:
       {
         char factor[G_ASCII_DTOSTR_BUF_SIZE];
@@ -359,26 +349,7 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
     {
     case COLOR_TYPE_LITERAL:
       return _gtk_css_value_ref (color);
-    case COLOR_TYPE_NAME:
-      {
-       GtkCssValue *named;
-        GSList cycle = { color, cycle_list };
-
-        /* If color exists in cycle_list, we're currently resolving it.
-         * So we've detected a cycle. */
-        if (g_slist_find (cycle_list, color))
-          return NULL;
 
-        named = gtk_style_provider_get_color (provider, color->sym_col.name);
-       if (named == NULL)
-         return NULL;
-
-        value = _gtk_css_color_value_resolve (named, provider, current, &cycle);
-       if (value == NULL)
-         return NULL;
-      }
-
-      break;
     case COLOR_TYPE_SHADE:
       {
         const GdkRGBA *c;
@@ -529,7 +500,6 @@ _gtk_css_color_value_new_name (const char *name)
   gtk_internal_return_val_if_fail (name != NULL, NULL);
 
   value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_COLOR);
-  value->type = COLOR_TYPE_NAME;
   value->sym_col.name = g_strdup (name);
 
   return value;
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 13644f5d82..d8c93cf3ba 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -127,7 +127,6 @@ struct _GtkCssProviderPrivate
 {
   GScanner *scanner;
 
-  GHashTable *symbolic_colors;
   GHashTable *keyframes;
 
   GArray *rulesets;
@@ -395,9 +394,6 @@ gtk_css_provider_init (GtkCssProvider *css_provider)
 
   priv->rulesets = g_array_new (FALSE, FALSE, sizeof (GtkCssRuleset));
 
-  priv->symbolic_colors = g_hash_table_new_full (g_str_hash, g_str_equal,
-                                                 (GDestroyNotify) g_free,
-                                                 (GDestroyNotify) _gtk_css_value_unref);
   priv->keyframes = g_hash_table_new_full (g_str_hash, g_str_equal,
                                            (GDestroyNotify) g_free,
                                            (GDestroyNotify) _gtk_css_keyframes_unref);
@@ -440,16 +436,6 @@ verify_tree_match_results (GtkCssProvider        *provider,
 #endif
 }
 
-static GtkCssValue *
-gtk_css_style_provider_get_color (GtkStyleProvider *provider,
-                                  const char       *name)
-{
-  GtkCssProvider *css_provider = GTK_CSS_PROVIDER (provider);
-  GtkCssProviderPrivate *priv = gtk_css_provider_get_instance_private (css_provider);
-
-  return g_hash_table_lookup (priv->symbolic_colors, name);
-}
-
 static GtkCssKeyframes *
 gtk_css_style_provider_get_keyframes (GtkStyleProvider *provider,
                                       const char       *name)
@@ -515,7 +501,6 @@ gtk_css_style_provider_lookup (GtkStyleProvider             *provider,
 static void
 gtk_css_style_provider_iface_init (GtkStyleProviderInterface *iface)
 {
-  iface->get_color = gtk_css_style_provider_get_color;
   iface->get_keyframes = gtk_css_style_provider_get_keyframes;
   iface->lookup = gtk_css_style_provider_lookup;
   iface->emit_error = gtk_css_style_provider_emit_error;
@@ -534,7 +519,6 @@ gtk_css_provider_finalize (GObject *object)
   g_array_free (priv->rulesets, TRUE);
   _gtk_css_selector_tree_free (priv->tree);
 
-  g_hash_table_destroy (priv->symbolic_colors);
   g_hash_table_destroy (priv->keyframes);
 
   if (priv->resource)
@@ -607,7 +591,6 @@ gtk_css_provider_reset (GtkCssProvider *css_provider)
       priv->path = NULL;
     }
 
-  g_hash_table_remove_all (priv->symbolic_colors);
   g_hash_table_remove_all (priv->keyframes);
 
   for (i = 0; i < priv->rulesets->len; i++)
@@ -688,41 +671,6 @@ parse_import (GtkCssScanner *scanner)
   return TRUE;
 }
 
-static gboolean
-parse_color_definition (GtkCssScanner *scanner)
-{
-  GtkCssProviderPrivate *priv = gtk_css_provider_get_instance_private (scanner->provider);
-  GtkCssValue *color;
-  char *name;
-
-  if (!gtk_css_parser_try_at_keyword (scanner->parser, "define-color"))
-    return FALSE;
-
-  name = gtk_css_parser_consume_ident (scanner->parser);
-  if (name == NULL)
-    return TRUE;
-
-  color = _gtk_css_color_value_parse (scanner->parser);
-  if (color == NULL)
-    {
-      g_free (name);
-      return TRUE;
-    }
-
-  if (!gtk_css_parser_has_token (scanner->parser, GTK_CSS_TOKEN_EOF))
-    {
-      g_free (name);
-      _gtk_css_value_unref (color);
-      gtk_css_parser_error_syntax (scanner->parser,
-                                   "Missing semicolon at end of color definition");
-      return TRUE;
-    }
-
-  g_hash_table_insert (priv->symbolic_colors, name, color);
-
-  return TRUE;
-}
-
 static gboolean
 parse_keyframes (GtkCssScanner *scanner)
 {
@@ -761,7 +709,6 @@ parse_at_keyword (GtkCssScanner *scanner)
   gtk_css_parser_start_semicolon_block (scanner->parser, GTK_CSS_TOKEN_OPEN_CURLY);
 
   if (!parse_import (scanner) &&
-      !parse_color_definition (scanner) &&
       !parse_keyframes (scanner))
     {
       gtk_css_parser_error_syntax (scanner->parser, "Unknown @ rule");
@@ -1458,31 +1405,6 @@ gtk_css_ruleset_print (const GtkCssRuleset *ruleset,
   g_string_append (str, "}\n");
 }
 
-static void
-gtk_css_provider_print_colors (GHashTable *colors,
-                               GString    *str)
-{
-  GList *keys, *walk;
-
-  keys = g_hash_table_get_keys (colors);
-  /* so the output is identical for identical styles */
-  keys = g_list_sort (keys, (GCompareFunc) strcmp);
-
-  for (walk = keys; walk; walk = walk->next)
-    {
-      const char *name = walk->data;
-      GtkCssValue *color = g_hash_table_lookup (colors, (gpointer) name);
-
-      g_string_append (str, "@define-color ");
-      g_string_append (str, name);
-      g_string_append (str, " ");
-      _gtk_css_value_print (color, str);
-      g_string_append (str, ";\n");
-    }
-
-  g_list_free (keys);
-}
-
 static void
 gtk_css_provider_print_keyframes (GHashTable *keyframes,
                                   GString    *str)
@@ -1535,7 +1457,6 @@ gtk_css_provider_to_string (GtkCssProvider *provider)
 
   str = g_string_new ("");
 
-  gtk_css_provider_print_colors (priv->symbolic_colors, str);
   gtk_css_provider_print_keyframes (priv->keyframes, str);
 
   for (i = 0; i < priv->rulesets->len; i++)
diff --git a/gtk/gtkstylecascade.c b/gtk/gtkstylecascade.c
index 1871b7073e..3f8fd98f87 100644
--- a/gtk/gtkstylecascade.c
+++ b/gtk/gtkstylecascade.c
@@ -120,31 +120,6 @@ gtk_style_cascade_get_settings (GtkStyleProvider *provider)
   return NULL;
 }
 
-static GtkCssValue *
-gtk_style_cascade_get_color (GtkStyleProvider *provider,
-                             const char              *name)
-{
-  GtkStyleCascade *cascade = GTK_STYLE_CASCADE (provider);
-  GtkStyleCascadeIter iter;
-  GtkCssValue *color;
-  GtkStyleProvider *item;
-
-  for (item = gtk_style_cascade_iter_init (cascade, &iter);
-       item;
-       item = gtk_style_cascade_iter_next (cascade, &iter))
-    {
-      color = gtk_style_provider_get_color (item, name);
-      if (color)
-        {
-          gtk_style_cascade_iter_clear (&iter);
-          return color;
-        }
-    }
-
-  gtk_style_cascade_iter_clear (&iter);
-  return NULL;
-}
-
 static int
 gtk_style_cascade_get_scale (GtkStyleProvider *provider)
 {
@@ -205,7 +180,6 @@ gtk_style_cascade_lookup (GtkStyleProvider             *provider,
 static void
 gtk_style_cascade_provider_iface_init (GtkStyleProviderInterface *iface)
 {
-  iface->get_color = gtk_style_cascade_get_color;
   iface->get_settings = gtk_style_cascade_get_settings;
   iface->get_scale = gtk_style_cascade_get_scale;
   iface->get_keyframes = gtk_style_cascade_get_keyframes;
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 5fca489632..56b7982504 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -838,11 +838,7 @@ gtk_style_context_lookup_color (GtkStyleContext *context,
   g_return_val_if_fail (color_name != NULL, FALSE);
   g_return_val_if_fail (color != NULL, FALSE);
 
-  value = gtk_style_provider_get_color (GTK_STYLE_PROVIDER (priv->cascade), color_name);
-  if (value == NULL)
-    return FALSE;
-
-  return gtk_style_context_resolve_color (context, value, color);
+  return FALSE;
 }
 
 /**
diff --git a/gtk/gtkstyleprovider.c b/gtk/gtkstyleprovider.c
index f9f530c45a..19fb2c08ad 100644
--- a/gtk/gtkstyleprovider.c
+++ b/gtk/gtkstyleprovider.c
@@ -58,26 +58,6 @@ gtk_style_provider_default_init (GtkStyleProviderInterface *iface)
 
 }
 
-GtkCssValue *
-gtk_style_provider_get_color (GtkStyleProvider *provider,
-                              const char       *name)
-{
-  GtkStyleProviderInterface *iface;
-
-  /* for compat with gtk_symbolic_color_resolve() */
-  if (provider == NULL)
-    return NULL;
-
-  gtk_internal_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), NULL);
-
-  iface = GTK_STYLE_PROVIDER_GET_INTERFACE (provider);
-
-  if (!iface->get_color)
-    return NULL;
-
-  return iface->get_color (provider, name);
-}
-
 GtkCssKeyframes *
 gtk_style_provider_get_keyframes (GtkStyleProvider *provider,
                                   const char       *name)
diff --git a/gtk/gtkstyleproviderprivate.h b/gtk/gtkstyleproviderprivate.h
index 5ee16e3d00..9df1073987 100644
--- a/gtk/gtkstyleproviderprivate.h
+++ b/gtk/gtkstyleproviderprivate.h
@@ -36,8 +36,6 @@ struct _GtkStyleProviderInterface
 {
   GTypeInterface g_iface;
 
-  GtkCssValue *         (* get_color)           (GtkStyleProvider        *provider,
-                                                 const char              *name);
   GtkSettings *         (* get_settings)        (GtkStyleProvider        *provider);
   GtkCssKeyframes *     (* get_keyframes)       (GtkStyleProvider        *provider,
                                                  const char              *name);
@@ -55,8 +53,6 @@ struct _GtkStyleProviderInterface
 };
 
 GtkSettings *           gtk_style_provider_get_settings          (GtkStyleProvider        *provider);
-GtkCssValue *           gtk_style_provider_get_color             (GtkStyleProvider        *provider,
-                                                                  const char              *name);
 GtkCssKeyframes *       gtk_style_provider_get_keyframes         (GtkStyleProvider        *provider,
                                                                   const char              *name);
 int                     gtk_style_provider_get_scale             (GtkStyleProvider        *provider);


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