Commit 4e09e180 authored by Matthias Clasen's avatar Matthias Clasen

Fix css parser tests

Parsing a shorthand background property was running into unexpected
errors when trying position values where there were none. To fix this,
introduce a try_parse variant of the position parse function that
silently returns NULL.
parent f9dae1d5
......@@ -173,8 +173,8 @@ _gtk_css_position_value_new (GtkCssValue *x,
return result;
}
GtkCssValue *
_gtk_css_position_value_parse (GtkCssParser *parser)
static GtkCssValue *
position_value_parse (GtkCssParser *parser, gboolean try)
{
static const struct {
const char *name;
......@@ -225,7 +225,8 @@ _gtk_css_position_value_parse (GtkCssParser *parser)
}
else
{
_gtk_css_parser_error (parser, "Unrecognized position value");
if (!try)
_gtk_css_parser_error (parser, "Unrecognized position value");
return NULL;
}
}
......@@ -245,7 +246,8 @@ _gtk_css_position_value_parse (GtkCssParser *parser)
{
if (missing != &y)
{
_gtk_css_parser_error (parser, "Invalid combination of values");
if (!try)
_gtk_css_parser_error (parser, "Invalid combination of values");
_gtk_css_value_unref (y);
return NULL;
}
......@@ -269,7 +271,8 @@ _gtk_css_position_value_parse (GtkCssParser *parser)
if ((names[first].horizontal && !names[second].vertical) ||
(!names[first].horizontal && !names[second].horizontal))
{
_gtk_css_parser_error (parser, "Invalid combination of values");
if (!try)
_gtk_css_parser_error (parser, "Invalid combination of values");
_gtk_css_value_unref (x);
_gtk_css_value_unref (y);
return NULL;
......@@ -279,6 +282,18 @@ _gtk_css_position_value_parse (GtkCssParser *parser)
return _gtk_css_position_value_new (x, y);
}
GtkCssValue *
_gtk_css_position_value_parse (GtkCssParser *parser)
{
return position_value_parse (parser, FALSE);
}
GtkCssValue *
_gtk_css_position_value_try_parse (GtkCssParser *parser)
{
return position_value_parse (parser, TRUE);
}
double
_gtk_css_position_value_get_x (const GtkCssValue *position,
double one_hundred_percent)
......
......@@ -26,8 +26,9 @@
G_BEGIN_DECLS
GtkCssValue * _gtk_css_position_value_new (GtkCssValue *x,
GtkCssValue *y);
GtkCssValue *y);
GtkCssValue * _gtk_css_position_value_parse (GtkCssParser *parser);
GtkCssValue * _gtk_css_position_value_try_parse (GtkCssParser *parser);
double _gtk_css_position_value_get_x (const GtkCssValue *position,
double one_hundred_percent);
......
......@@ -484,7 +484,7 @@ parse_one_background (GtkCssShorthandProperty *shorthand,
values[0] = _gtk_css_image_value_new (image);
}
else if (values[1] == NULL &&
(value = _gtk_css_position_value_parse (parser)))
(value = _gtk_css_position_value_try_parse (parser)))
{
values[1] = value;
value = NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment