styleproperty: require property in _gtk_style_property_parse_value()

Other code uses _gtk_css_style_parse_value() instead now.
This commit is contained in:
Benjamin Otte 2012-01-02 00:14:23 +01:00
parent 30eb26087c
commit 389531d15d
3 changed files with 50 additions and 52 deletions

View File

@ -28,6 +28,7 @@
#include "gtkcssproviderprivate.h" #include "gtkcssproviderprivate.h"
#include "gtkbitmaskprivate.h" #include "gtkbitmaskprivate.h"
#include "gtkcssstylefuncsprivate.h"
#include "gtkcssparserprivate.h" #include "gtkcssparserprivate.h"
#include "gtkcsssectionprivate.h" #include "gtkcsssectionprivate.h"
#include "gtkcssselectorprivate.h" #include "gtkcssselectorprivate.h"
@ -1485,10 +1486,9 @@ gtk_css_provider_get_style_property (GtkStyleProvider *provider,
gtk_css_section_get_file (val->section), gtk_css_section_get_file (val->section),
g_value_get_string (&val->value)); g_value_get_string (&val->value));
found = _gtk_style_property_parse_value (NULL, found = _gtk_css_style_parse_value (value,
value, scanner->parser,
scanner->parser, NULL);
NULL);
gtk_css_scanner_destroy (scanner); gtk_css_scanner_destroy (scanner);

View File

@ -26,6 +26,7 @@
#include <math.h> #include <math.h>
#include "gtkborderimageprivate.h" #include "gtkborderimageprivate.h"
#include "gtkcssstylefuncsprivate.h"
#include "gtkcsstypesprivate.h" #include "gtkcsstypesprivate.h"
/* this is in case round() is not provided by the compiler, /* this is in case round() is not provided by the compiler,
@ -54,7 +55,7 @@ border_image_value_parse (GtkCssParser *parser,
g_value_init (&temp, CAIRO_GOBJECT_TYPE_PATTERN); g_value_init (&temp, CAIRO_GOBJECT_TYPE_PATTERN);
if (!_gtk_style_property_parse_value (NULL, &temp, parser, base)) if (!_gtk_css_style_parse_value (&temp, parser, base))
return FALSE; return FALSE;
boxed_type = G_VALUE_TYPE (&temp); boxed_type = G_VALUE_TYPE (&temp);
@ -66,7 +67,7 @@ border_image_value_parse (GtkCssParser *parser,
g_value_unset (&temp); g_value_unset (&temp);
g_value_init (&temp, GTK_TYPE_BORDER); g_value_init (&temp, GTK_TYPE_BORDER);
if (!_gtk_style_property_parse_value (NULL, &temp, parser, base)) if (!_gtk_css_style_parse_value (&temp, parser, base))
goto out; goto out;
parsed_slice = g_value_get_boxed (&temp); parsed_slice = g_value_get_boxed (&temp);
@ -77,7 +78,7 @@ border_image_value_parse (GtkCssParser *parser,
g_value_unset (&temp); g_value_unset (&temp);
g_value_init (&temp, GTK_TYPE_BORDER); g_value_init (&temp, GTK_TYPE_BORDER);
if (!_gtk_style_property_parse_value (NULL, &temp, parser, base)) if (!_gtk_css_style_parse_value (&temp, parser, base))
goto out; goto out;
width = g_value_dup_boxed (&temp); width = g_value_dup_boxed (&temp);
@ -86,7 +87,7 @@ border_image_value_parse (GtkCssParser *parser,
g_value_unset (&temp); g_value_unset (&temp);
g_value_init (&temp, GTK_TYPE_CSS_BORDER_IMAGE_REPEAT); g_value_init (&temp, GTK_TYPE_CSS_BORDER_IMAGE_REPEAT);
if (!_gtk_style_property_parse_value (NULL, &temp, parser, base)) if (!_gtk_css_style_parse_value (&temp, parser, base))
goto out; goto out;
parsed_repeat = g_value_get_boxed (&temp); parsed_repeat = g_value_get_boxed (&temp);

View File

@ -385,56 +385,53 @@ _gtk_style_property_parse_value (GtkStyleProperty *property,
GtkCssParser *parser, GtkCssParser *parser,
GFile *base) GFile *base)
{ {
g_return_val_if_fail (GTK_IS_STYLE_PROPERTY (property), FALSE);
g_return_val_if_fail (value != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE);
g_return_val_if_fail (parser != NULL, FALSE); g_return_val_if_fail (parser != NULL, FALSE);
if (property) if (_gtk_css_parser_try (parser, "initial", TRUE))
{ {
if (_gtk_css_parser_try (parser, "initial", TRUE)) /* the initial value can be explicitly specified with the
{ * initial keyword which all properties accept.
/* the initial value can be explicitly specified with the */
* initial keyword which all properties accept. g_value_unset (value);
*/ g_value_init (value, GTK_TYPE_CSS_SPECIAL_VALUE);
g_value_unset (value); g_value_set_enum (value, GTK_CSS_INITIAL);
g_value_init (value, GTK_TYPE_CSS_SPECIAL_VALUE); return TRUE;
g_value_set_enum (value, GTK_CSS_INITIAL);
return TRUE;
}
else if (_gtk_css_parser_try (parser, "inherit", TRUE))
{
/* All properties accept the inherit value which
* explicitly specifies that the value will be determined
* by inheritance. The inherit value can be used to
* strengthen inherited values in the cascade, and it can
* also be used on properties that are not normally inherited.
*/
g_value_unset (value);
g_value_init (value, GTK_TYPE_CSS_SPECIAL_VALUE);
g_value_set_enum (value, GTK_CSS_INHERIT);
return TRUE;
}
else if (property->property_parse_func)
{
GError *error = NULL;
char *value_str;
gboolean success;
value_str = _gtk_css_parser_read_value (parser);
if (value_str == NULL)
return FALSE;
success = (*property->property_parse_func) (value_str, value, &error);
g_free (value_str);
return success;
}
if (property->parse_func)
return (* property->parse_func) (parser, base, value);
} }
else if (_gtk_css_parser_try (parser, "inherit", TRUE))
{
/* All properties accept the inherit value which
* explicitly specifies that the value will be determined
* by inheritance. The inherit value can be used to
* strengthen inherited values in the cascade, and it can
* also be used on properties that are not normally inherited.
*/
g_value_unset (value);
g_value_init (value, GTK_TYPE_CSS_SPECIAL_VALUE);
g_value_set_enum (value, GTK_CSS_INHERIT);
return TRUE;
}
else if (property->property_parse_func)
{
GError *error = NULL;
char *value_str;
gboolean success;
value_str = _gtk_css_parser_read_value (parser);
if (value_str == NULL)
return FALSE;
success = (*property->property_parse_func) (value_str, value, &error);
return _gtk_css_style_parse_value (value, parser, base); g_free (value_str);
return success;
}
else if (property->parse_func)
return (* property->parse_func) (parser, base, value);
else
return _gtk_css_style_parse_value (value, parser, base);
} }
GParameter * GParameter *