diff options
author | Benjamin Otte <otte@redhat.com> | 2016-02-13 04:12:45 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-02-13 04:49:08 +0100 |
commit | 0cda3ba3e8fb70d3b88b2b810ee7b988ef5f631d (patch) | |
tree | efc9b03b6fc025fc0b9f1185f79ebbc91a28f27e /gtk/gtkcsscalcvalue.c | |
parent | 63d1f8074287e4001b74b2f52018f32fe0b9cb7b (diff) | |
download | gtk+-0cda3ba3e8fb70d3b88b2b810ee7b988ef5f631d.tar.gz |
calc: Allow subterms with '(' ')' bracketing
Some more tests included.
Diffstat (limited to 'gtk/gtkcsscalcvalue.c')
-rw-r--r-- | gtk/gtkcsscalcvalue.c | 19 |
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); } |