forked from AuroraMiddleware/gtk
css: Use gtk_css_parser_consume_any() for transition shorthand
This commit is contained in:
parent
acaec5f186
commit
de73ac980f
@ -635,57 +635,64 @@ parse_background (GtkCssShorthandProperty *shorthand,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
has_transition_property (GtkCssParser *parser,
|
||||||
|
gpointer option_data,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
return gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_IDENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
parse_transition_property (GtkCssParser *parser,
|
||||||
|
gpointer option_data,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkCssValue **value = option_data;
|
||||||
|
|
||||||
|
*value = _gtk_css_ident_value_try_parse (parser);
|
||||||
|
g_assert (*value);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
parse_transition_time (GtkCssParser *parser,
|
||||||
|
gpointer option_data,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkCssValue **value = option_data;
|
||||||
|
|
||||||
|
*value = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME);
|
||||||
|
|
||||||
|
return *value != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
parse_transition_timing_function (GtkCssParser *parser,
|
||||||
|
gpointer option_data,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GtkCssValue **value = option_data;
|
||||||
|
|
||||||
|
*value = _gtk_css_ease_value_parse (parser);
|
||||||
|
|
||||||
|
return *value != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
parse_one_transition (GtkCssShorthandProperty *shorthand,
|
parse_one_transition (GtkCssShorthandProperty *shorthand,
|
||||||
GtkCssValue **values,
|
GtkCssValue **values,
|
||||||
GtkCssParser *parser)
|
GtkCssParser *parser)
|
||||||
{
|
{
|
||||||
do
|
const GtkCssParseOption options[] = {
|
||||||
{
|
{ (void *) _gtk_css_ease_value_can_parse, parse_transition_timing_function, &values[3] },
|
||||||
/* the image part */
|
{ (void *) gtk_css_number_value_can_parse, parse_transition_time, &values[1] },
|
||||||
if (values[2] == NULL &&
|
{ (void *) gtk_css_number_value_can_parse, parse_transition_time, &values[2] },
|
||||||
gtk_css_number_value_can_parse (parser))
|
{ (void *) has_transition_property, parse_transition_property, &values[0] },
|
||||||
{
|
};
|
||||||
GtkCssValue *number = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_TIME);
|
|
||||||
|
|
||||||
if (number == NULL)
|
return gtk_css_parser_consume_any (parser, options, G_N_ELEMENTS (options), NULL);
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (values[1] == NULL)
|
|
||||||
values[1] = number;
|
|
||||||
else
|
|
||||||
values[2] = number;
|
|
||||||
}
|
|
||||||
else if (values[3] == NULL &&
|
|
||||||
_gtk_css_ease_value_can_parse (parser))
|
|
||||||
{
|
|
||||||
values[3] = _gtk_css_ease_value_parse (parser);
|
|
||||||
|
|
||||||
if (values[3] == NULL)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else if (values[0] == NULL)
|
|
||||||
{
|
|
||||||
values[0] = _gtk_css_ident_value_try_parse (parser);
|
|
||||||
if (values[0] == NULL)
|
|
||||||
{
|
|
||||||
_gtk_css_parser_error (parser, "Unknown value for property");
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* We parsed everything and there's still stuff left?
|
|
||||||
* Pretend we didn't notice and let the normal code produce
|
|
||||||
* a 'junk at end of value' error
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (!value_is_done_parsing (parser));
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
Loading…
Reference in New Issue
Block a user