diff options
author | Paolo Borelli <pborelli@gnome.org> | 2012-01-05 15:47:23 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-01-09 18:37:58 +0100 |
commit | fee09e726f9b46ca56dde0962ffd582eef4f2b18 (patch) | |
tree | 6838a6c7965bfc148cce4cf9486713b32c012455 /gtk | |
parent | fce45757cb7eae2a85be7b26b0299ebaac3721c0 (diff) | |
download | gtk+-fee09e726f9b46ca56dde0962ffd582eef4f2b18.tar.gz |
Introduce _gtk_css_parser_try_length
This starts to introduce the proper API abstraction for when we will
support different units
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkcssparser.c | 17 | ||||
-rw-r--r-- | gtk/gtkcssparserprivate.h | 6 | ||||
-rw-r--r-- | gtk/gtkcssstylefuncs.c | 16 |
3 files changed, 28 insertions, 11 deletions
diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c index 8bdcfc291d..a136466ee5 100644 --- a/gtk/gtkcssparser.c +++ b/gtk/gtkcssparser.c @@ -578,6 +578,23 @@ _gtk_css_parser_try_double (GtkCssParser *parser, return TRUE; } +/* XXX: we should introduce GtkCssLenght that deals with + * different kind of units */ +gboolean +_gtk_css_parser_try_length (GtkCssParser *parser, + int *value) +{ + if (!_gtk_css_parser_try_int (parser, value)) + return FALSE; + + /* FIXME: _try_uint skips spaces while the + * spec forbids them + */ + _gtk_css_parser_try (parser, "px", TRUE); + + return TRUE; +} + gboolean _gtk_css_parser_try_enum (GtkCssParser *parser, GType enum_type, diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h index f751b736f9..35c01eafaa 100644 --- a/gtk/gtkcssparserprivate.h +++ b/gtk/gtkcssparserprivate.h @@ -72,9 +72,11 @@ gboolean _gtk_css_parser_try_uint (GtkCssParser *parser guint *value); gboolean _gtk_css_parser_try_double (GtkCssParser *parser, gdouble *value); +gboolean _gtk_css_parser_try_length (GtkCssParser *parser, + int *value); gboolean _gtk_css_parser_try_enum (GtkCssParser *parser, - GType enum_type, - int *value); + GType enum_type, + int *value); void _gtk_css_parser_skip_whitespace (GtkCssParser *parser); char * _gtk_css_parser_read_string (GtkCssParser *parser); diff --git a/gtk/gtkcssstylefuncs.c b/gtk/gtkcssstylefuncs.c index 7b53bbb736..859569914b 100644 --- a/gtk/gtkcssstylefuncs.c +++ b/gtk/gtkcssstylefuncs.c @@ -646,7 +646,8 @@ border_value_parse (GtkCssParser *parser, GValue *value) { GtkBorder border = { 0, }; - guint i, numbers[4]; + guint i; + int numbers[4]; for (i = 0; i < G_N_ELEMENTS (numbers); i++) { @@ -654,7 +655,7 @@ border_value_parse (GtkCssParser *parser, { /* These are strictly speaking signed, but we want to be able to use them for unsigned types too, as the actual ranges of values make this safe */ - int res = _gtk_win32_theme_int_parse (parser, base, (int *)&numbers[i]); + int res = _gtk_win32_theme_int_parse (parser, base, &numbers[i]); if (res == 0) /* Parse error, report */ return FALSE; @@ -663,13 +664,10 @@ border_value_parse (GtkCssParser *parser, break; } else - { - if (!_gtk_css_parser_try_uint (parser, &numbers[i])) - break; - - /* XXX: shouldn't allow spaces here? */ - _gtk_css_parser_try (parser, "px", TRUE); - } + { + if (!_gtk_css_parser_try_length (parser, &numbers[i])) + break; + } } if (i == 0) |