]> Pileus Git - ~andy/gtk/commitdiff
csscustomproperty: Redo RGBA/Color parsing
authorBenjamin Otte <otte@redhat.com>
Mon, 9 Apr 2012 01:05:12 +0000 (03:05 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 9 Apr 2012 01:09:44 +0000 (03:09 +0200)
This fixes custom parse functions returning RGBA values where we
expected symbolic colors.

gtk/gtkcsscustomproperty.c
gtk/gtkcssstyleproperty.c

index 179705b5c15567a845f804590e93027542e3b77a..bce695df4823785b9cb92a77dbbae02f1f3b269b 100644 (file)
@@ -81,33 +81,28 @@ _gtk_css_custom_property_init (GtkCssCustomProperty *custom_property)
 {
 }
 
-static GType
-gtk_css_custom_property_get_specified_type (GParamSpec *pspec)
-{
-  if (pspec->value_type == GDK_TYPE_RGBA ||
-      pspec->value_type == GDK_TYPE_COLOR)
-    return GTK_TYPE_SYMBOLIC_COLOR;
-  else
-    return pspec->value_type;
-}
-
 static GtkCssValue *
 gtk_css_custom_property_create_initial_value (GParamSpec *pspec)
 {
   GValue value = G_VALUE_INIT;
 
-  g_value_init (&value, gtk_css_custom_property_get_specified_type (pspec));
+  g_value_init (&value, pspec->value_type);
 
   if (pspec->value_type == GTK_TYPE_THEMING_ENGINE)
     g_value_set_object (&value, gtk_theming_engine_load (NULL));
   else if (pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION)
     g_value_take_boxed (&value, pango_font_description_from_string ("Sans 10"));
-  else if (pspec->value_type == GDK_TYPE_RGBA ||
-           pspec->value_type == GDK_TYPE_COLOR)
+  else if (pspec->value_type == GDK_TYPE_RGBA)
     {
       GdkRGBA color;
       gdk_rgba_parse (&color, "pink");
-      g_value_take_boxed (&value, gtk_symbolic_color_new_literal (&color));
+      g_value_take_boxed (&value, &color);
+    }
+  else if (pspec->value_type == GDK_TYPE_COLOR)
+    {
+      GdkColor color;
+      gdk_color_parse ("pink", &color);
+      g_value_take_boxed (&value, &color);
     }
   else if (pspec->value_type == GTK_TYPE_BORDER)
     {
index cbbe606af97558ea7ceb328fd615094dffddbcc5..c9d4e564500a6c0baeda7c465cdcacccd8d58f51 100644 (file)
@@ -464,6 +464,10 @@ _gtk_css_style_property_is_specified_type (GtkCssStyleProperty *property,
     return TRUE;
 
   /* XXX: Someone needs to fix that legacy */
+  if ((_gtk_css_value_holds (property->initial_value, GDK_TYPE_RGBA) ||
+       _gtk_css_value_holds (property->initial_value, GDK_TYPE_COLOR)) &&
+      type == GTK_TYPE_GRADIENT)
+    return TRUE;
   if (_gtk_css_value_holds (property->initial_value, CAIRO_GOBJECT_TYPE_PATTERN) &&
       type == GTK_TYPE_GRADIENT)
     return TRUE;