css: Create SymbolicColor fallback properties for colors

This commit is contained in:
Benjamin Otte 2012-01-14 04:18:29 +01:00
parent c2fb315878
commit 25affd4766

View File

@ -77,21 +77,32 @@ _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 void static void
gtk_css_custom_property_create_initial_value (GParamSpec *pspec, gtk_css_custom_property_create_initial_value (GParamSpec *pspec,
GValue *value) GValue *value)
{ {
g_value_init (value, pspec->value_type); g_value_init (value, gtk_css_custom_property_get_specified_type (pspec));
if (pspec->value_type == GTK_TYPE_THEMING_ENGINE) if (pspec->value_type == GTK_TYPE_THEMING_ENGINE)
g_value_set_object (value, gtk_theming_engine_load (NULL)); g_value_set_object (value, gtk_theming_engine_load (NULL));
else if (pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION) else if (pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION)
g_value_take_boxed (value, pango_font_description_from_string ("Sans 10")); g_value_take_boxed (value, pango_font_description_from_string ("Sans 10"));
else if (pspec->value_type == GDK_TYPE_RGBA) else if (pspec->value_type == GDK_TYPE_RGBA ||
pspec->value_type == GDK_TYPE_COLOR)
{ {
GdkRGBA color; GdkRGBA color;
gdk_rgba_parse (&color, "pink"); gdk_rgba_parse (&color, "pink");
g_value_set_boxed (value, &color); g_value_take_boxed (value, gtk_symbolic_color_new_literal (&color));
} }
else if (pspec->value_type == GTK_TYPE_BORDER) else if (pspec->value_type == GTK_TYPE_BORDER)
{ {