summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorPaolo Borelli <pborelli@gnome.org>2012-01-05 15:47:23 +0100
committerBenjamin Otte <otte@redhat.com>2012-01-09 18:37:58 +0100
commitfee09e726f9b46ca56dde0962ffd582eef4f2b18 (patch)
tree6838a6c7965bfc148cce4cf9486713b32c012455 /gtk
parentfce45757cb7eae2a85be7b26b0299ebaac3721c0 (diff)
downloadgtk+-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.c17
-rw-r--r--gtk/gtkcssparserprivate.h6
-rw-r--r--gtk/gtkcssstylefuncs.c16
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)