cssstringfuncs: Read colors as symbolic colors always
... and then try to resolve them, so static colors get resolved in advance, just like it was before.
This commit is contained in:
@ -114,19 +114,21 @@ rgba_value_from_string (const char *str,
|
|||||||
GtkSymbolicColor *symbolic;
|
GtkSymbolicColor *symbolic;
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
|
|
||||||
if (gdk_rgba_parse (&rgba, str))
|
|
||||||
{
|
|
||||||
g_value_set_boxed (value, &rgba);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
symbolic = _gtk_css_parse_symbolic_color (str, error);
|
symbolic = _gtk_css_parse_symbolic_color (str, error);
|
||||||
if (symbolic == NULL)
|
if (symbolic == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
g_value_unset (value);
|
if (gtk_symbolic_color_resolve (symbolic, NULL, &rgba))
|
||||||
g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR);
|
{
|
||||||
g_value_take_boxed (value, symbolic);
|
g_value_set_boxed (value, &rgba);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_value_unset (value);
|
||||||
|
g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR);
|
||||||
|
g_value_take_boxed (value, symbolic);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,21 +150,29 @@ color_value_from_string (const char *str,
|
|||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GtkSymbolicColor *symbolic;
|
GtkSymbolicColor *symbolic;
|
||||||
GdkColor color;
|
GdkRGBA rgba;
|
||||||
|
|
||||||
if (gdk_color_parse (str, &color))
|
|
||||||
{
|
|
||||||
g_value_set_boxed (value, &color);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
symbolic = _gtk_css_parse_symbolic_color (str, error);
|
symbolic = _gtk_css_parse_symbolic_color (str, error);
|
||||||
if (symbolic == NULL)
|
if (symbolic == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
g_value_unset (value);
|
if (gtk_symbolic_color_resolve (symbolic, NULL, &rgba))
|
||||||
g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR);
|
{
|
||||||
g_value_take_boxed (value, symbolic);
|
GdkColor color;
|
||||||
|
|
||||||
|
color.red = rgba.red * 65535. + 0.5;
|
||||||
|
color.green = rgba.green * 65535. + 0.5;
|
||||||
|
color.blue = rgba.blue * 65535. + 0.5;
|
||||||
|
|
||||||
|
g_value_set_boxed (value, &color);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_value_unset (value);
|
||||||
|
g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR);
|
||||||
|
g_value_take_boxed (value, symbolic);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user