Introduce _gtk_css_parser_try_length

This starts to introduce the proper API abstraction for when we will
support different units
This commit is contained in:
Paolo Borelli
2012-01-05 15:47:23 +01:00
committed by Benjamin Otte
parent fce45757cb
commit fee09e726f
3 changed files with 28 additions and 11 deletions

View File

@ -578,6 +578,23 @@ _gtk_css_parser_try_double (GtkCssParser *parser,
return TRUE; 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 gboolean
_gtk_css_parser_try_enum (GtkCssParser *parser, _gtk_css_parser_try_enum (GtkCssParser *parser,
GType enum_type, GType enum_type,

View File

@ -72,6 +72,8 @@ gboolean _gtk_css_parser_try_uint (GtkCssParser *parser
guint *value); guint *value);
gboolean _gtk_css_parser_try_double (GtkCssParser *parser, gboolean _gtk_css_parser_try_double (GtkCssParser *parser,
gdouble *value); gdouble *value);
gboolean _gtk_css_parser_try_length (GtkCssParser *parser,
int *value);
gboolean _gtk_css_parser_try_enum (GtkCssParser *parser, gboolean _gtk_css_parser_try_enum (GtkCssParser *parser,
GType enum_type, GType enum_type,
int *value); int *value);

View File

@ -646,7 +646,8 @@ border_value_parse (GtkCssParser *parser,
GValue *value) GValue *value)
{ {
GtkBorder border = { 0, }; GtkBorder border = { 0, };
guint i, numbers[4]; guint i;
int numbers[4];
for (i = 0; i < G_N_ELEMENTS (numbers); i++) 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 /* 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 */ 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 */ if (res == 0) /* Parse error, report */
return FALSE; return FALSE;
@ -664,11 +665,8 @@ border_value_parse (GtkCssParser *parser,
} }
else else
{ {
if (!_gtk_css_parser_try_uint (parser, &numbers[i])) if (!_gtk_css_parser_try_length (parser, &numbers[i]))
break; break;
/* XXX: shouldn't allow spaces here? */
_gtk_css_parser_try (parser, "px", TRUE);
} }
} }