diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-10-21 00:00:29 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-10-21 00:00:29 +0000 |
commit | 74329abf2924ee592f808e1ef4cc2f0c81327aa4 (patch) | |
tree | 45e801fc1d94cfbc650746881c09640545e6cbdc | |
parent | 0afae65c8a9cb14b978d9bc5f4db1f9fcbbb90ba (diff) | |
parent | 350a5edb87c447d7ef302df08cdd993e6425e8f0 (diff) | |
download | gtk+-74329abf2924ee592f808e1ef4cc2f0c81327aa4.tar.gz |
Merge branch 'wip/otte/for-master' into 'master'
Better errors ftw!
See merge request GNOME/gtk!4084
-rw-r--r-- | gtk/css/gtkcsstokenizer.c | 17 | ||||
-rw-r--r-- | gtk/css/gtkcsstokenizerprivate.h | 3 | ||||
-rw-r--r-- | gtk/gtkcsscalcvalue.c | 8 | ||||
-rw-r--r-- | gtk/gtkcssdimensionvalue.c | 3 | ||||
-rw-r--r-- | gtk/gtkcssnumbervalue.c | 3 |
5 files changed, 25 insertions, 9 deletions
diff --git a/gtk/css/gtkcsstokenizer.c b/gtk/css/gtkcsstokenizer.c index 05fca8ed01..a6d14abc21 100644 --- a/gtk/css/gtkcsstokenizer.c +++ b/gtk/css/gtkcsstokenizer.c @@ -55,7 +55,8 @@ gtk_css_token_clear (GtkCssToken *token) case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION: case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION: - case GTK_CSS_TOKEN_DIMENSION: + case GTK_CSS_TOKEN_SIGNED_DIMENSION: + case GTK_CSS_TOKEN_SIGNLESS_DIMENSION: g_free (token->dimension.dimension); break; @@ -206,7 +207,8 @@ gtk_css_token_is_finite (const GtkCssToken *token) case GTK_CSS_TOKEN_BAD_URL: case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION: case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION: - case GTK_CSS_TOKEN_DIMENSION: + case GTK_CSS_TOKEN_SIGNED_DIMENSION: + case GTK_CSS_TOKEN_SIGNLESS_DIMENSION: return FALSE; } } @@ -281,7 +283,8 @@ gtk_css_token_is_preserved (const GtkCssToken *token, case GTK_CSS_TOKEN_BAD_URL: case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION: case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION: - case GTK_CSS_TOKEN_DIMENSION: + case GTK_CSS_TOKEN_SIGNED_DIMENSION: + case GTK_CSS_TOKEN_SIGNLESS_DIMENSION: if (out_closing) *out_closing = GTK_CSS_TOKEN_EOF; return TRUE; @@ -372,11 +375,12 @@ gtk_css_token_print (const GtkCssToken *token, break; case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION: + case GTK_CSS_TOKEN_SIGNED_DIMENSION: if (token->dimension.value >= 0) g_string_append_c (string, '+'); G_GNUC_FALLTHROUGH; case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION: - case GTK_CSS_TOKEN_DIMENSION: + case GTK_CSS_TOKEN_SIGNLESS_DIMENSION: g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, token->dimension.value); g_string_append (string, buf); append_ident (string, token->dimension.dimension); @@ -549,7 +553,8 @@ gtk_css_token_init_dimension (GtkCssToken *token, { case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION: case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION: - case GTK_CSS_TOKEN_DIMENSION: + case GTK_CSS_TOKEN_SIGNED_DIMENSION: + case GTK_CSS_TOKEN_SIGNLESS_DIMENSION: token->dimension.value = value; token->dimension.dimension = dimension; break; @@ -1122,7 +1127,7 @@ gtk_css_tokenizer_read_numeric (GtkCssTokenizer *tokenizer, if (is_int) type = has_sign ? GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION : GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION; else - type = GTK_CSS_TOKEN_DIMENSION; + type = has_sign ? GTK_CSS_TOKEN_SIGNED_DIMENSION : GTK_CSS_TOKEN_SIGNLESS_DIMENSION; gtk_css_token_init_dimension (token, type, value, gtk_css_tokenizer_read_name (tokenizer)); } diff --git a/gtk/css/gtkcsstokenizerprivate.h b/gtk/css/gtkcsstokenizerprivate.h index 40447b0b89..6211ef722f 100644 --- a/gtk/css/gtkcsstokenizerprivate.h +++ b/gtk/css/gtkcsstokenizerprivate.h @@ -67,7 +67,8 @@ typedef enum { /* dimension */ GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION, GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION, - GTK_CSS_TOKEN_DIMENSION + GTK_CSS_TOKEN_SIGNED_DIMENSION, + GTK_CSS_TOKEN_SIGNLESS_DIMENSION } GtkCssTokenType; typedef union _GtkCssToken GtkCssToken; diff --git a/gtk/gtkcsscalcvalue.c b/gtk/gtkcsscalcvalue.c index ad7380b990..d0731b267b 100644 --- a/gtk/gtkcsscalcvalue.c +++ b/gtk/gtkcsscalcvalue.c @@ -166,6 +166,14 @@ gtk_css_calc_value_parse_sum (GtkCssParser *parser, } else { + if (gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_INTEGER) || + gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_NUMBER) || + gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION) || + gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_DIMENSION)) + { + gtk_css_parser_error_syntax (parser, "Unexpected signed number, did you forget a space between sign and number?"); + gtk_css_parser_consume_token (parser); + } break; } diff --git a/gtk/gtkcssdimensionvalue.c b/gtk/gtkcssdimensionvalue.c index 84a1d0e780..4bc0c32a6a 100644 --- a/gtk/gtkcssdimensionvalue.c +++ b/gtk/gtkcssdimensionvalue.c @@ -93,7 +93,8 @@ gtk_css_dimension_value_parse (GtkCssParser *parser, } else if (gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION) || gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION) || - gtk_css_token_is (token, GTK_CSS_TOKEN_DIMENSION)) + gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNED_DIMENSION) || + gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNLESS_DIMENSION)) { guint i; diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c index dacf9c4476..7b2dbeacc9 100644 --- a/gtk/gtkcssnumbervalue.c +++ b/gtk/gtkcssnumbervalue.c @@ -704,7 +704,8 @@ gtk_css_number_value_can_parse (GtkCssParser *parser) || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_PERCENTAGE) || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION) || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION) - || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_DIMENSION) + || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_DIMENSION) + || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNLESS_DIMENSION) || gtk_css_parser_has_function (parser, "calc"); } |