summaryrefslogtreecommitdiff
path: root/gtk/gtkcsscalcvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-02-13 04:12:45 +0100
committerBenjamin Otte <otte@redhat.com>2016-02-13 04:49:08 +0100
commit0cda3ba3e8fb70d3b88b2b810ee7b988ef5f631d (patch)
treeefc9b03b6fc025fc0b9f1185f79ebbc91a28f27e /gtk/gtkcsscalcvalue.c
parent63d1f8074287e4001b74b2f52018f32fe0b9cb7b (diff)
downloadgtk+-0cda3ba3e8fb70d3b88b2b810ee7b988ef5f631d.tar.gz
calc: Allow subterms with '(' ')' bracketing
Some more tests included.
Diffstat (limited to 'gtk/gtkcsscalcvalue.c')
-rw-r--r--gtk/gtkcsscalcvalue.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gtk/gtkcsscalcvalue.c b/gtk/gtkcsscalcvalue.c
index 2bcb5455fc..e10e790b23 100644
--- a/gtk/gtkcsscalcvalue.c
+++ b/gtk/gtkcsscalcvalue.c
@@ -316,6 +316,9 @@ gtk_css_calc_value_new_sum (GtkCssValue *value1,
return gtk_css_value_new_from_array (array);
}
+GtkCssValue * gtk_css_calc_value_parse_sum (GtkCssParser *parser,
+ GtkCssNumberParseFlags flags);
+
GtkCssValue *
gtk_css_calc_value_parse_value (GtkCssParser *parser,
GtkCssNumberParseFlags flags)
@@ -326,6 +329,22 @@ gtk_css_calc_value_parse_value (GtkCssParser *parser,
return NULL;
}
+ if (_gtk_css_parser_try (parser, "(", TRUE))
+ {
+ GtkCssValue *result = gtk_css_calc_value_parse_sum (parser, flags);
+ if (result == NULL)
+ return NULL;
+
+ if (!_gtk_css_parser_try (parser, ")", TRUE))
+ {
+ _gtk_css_parser_error (parser, "Missing closing ')' in calc() subterm");
+ _gtk_css_value_unref (result);
+ return NULL;
+ }
+
+ return result;
+ }
+
return _gtk_css_number_value_parse (parser, flags);
}