csscolorvalue: Don't resolve literal color values
authorTimm Bäder <mail@baedert.org>
Thu, 9 Jan 2020 09:22:53 +0000 (10:22 +0100)
committerTimm Bäder <mail@baedert.org>
Sat, 18 Jan 2020 07:49:51 +0000 (08:49 +0100)
gtk/gtkcsscolorvalue.c

index dbb63ae780d5aa8b0da8e6d7df7ceb8d9cb5cfbd..b8cd6c1dabe3799ed80a224f6e01bde11854174c 100644 (file)
@@ -136,7 +136,7 @@ gtk_css_value_color_compute (GtkCssValue      *value,
                              GtkCssStyle      *style,
                              GtkCssStyle      *parent_style)
 {
-  GtkCssValue *resolved, *current;
+  GtkCssValue *resolved;
 
   /* The computed value of the ‘currentColor’ keyword is the computed
    * value of the ‘color’ property. If the ‘currentColor’ keyword is
@@ -144,20 +144,31 @@ gtk_css_value_color_compute (GtkCssValue      *value,
    */
   if (property_id == GTK_CSS_PROPERTY_COLOR)
     {
+      GtkCssValue *current;
+
       if (parent_style)
         current = gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_COLOR);
       else
         current = NULL;
+
+      resolved = _gtk_css_color_value_resolve (value,
+                                               provider,
+                                               current,
+                                               NULL);
+    }
+  else if (value->type == COLOR_TYPE_LITERAL)
+    {
+      resolved = _gtk_css_value_ref (value->last_value);
     }
   else
     {
-      current = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
+      GtkCssValue *current = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
+
+      resolved = _gtk_css_color_value_resolve (value,
+                                               provider,
+                                               current,
+                                               NULL);
     }
-  
-  resolved = _gtk_css_color_value_resolve (value,
-                                           provider,
-                                           current,
-                                           NULL);
 
   if (resolved == NULL)
     return gtk_css_value_color_get_fallback (property_id, provider, style, parent_style);