diff options
author | Benjamin Otte <otte@redhat.com> | 2012-04-03 21:26:34 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:18 +0200 |
commit | aed7600425f42d568102c944fb4db8cac28fcf12 (patch) | |
tree | ded9bbe63d5a2f8a88b6bcd76fb0c9ac6c96c124 /gtk/gtkcssstylepropertyimpl.c | |
parent | 4f63c1c7cae40965e10367591eca3dad5a2a0240 (diff) | |
download | gtk+-aed7600425f42d568102c944fb4db8cac28fcf12.tar.gz |
cssvalue: Add a css value for engines
Diffstat (limited to 'gtk/gtkcssstylepropertyimpl.c')
-rw-r--r-- | gtk/gtkcssstylepropertyimpl.c | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index 6e645a7e91..cfae447415 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -43,6 +43,7 @@ #include "gtkcssarrayvalueprivate.h" #include "gtkcsscornervalueprivate.h" #include "gtkcsseasevalueprivate.h" +#include "gtkcssenginevalueprivate.h" #include "gtkcssimagegradientprivate.h" #include "gtkcssimageprivate.h" #include "gtkcssimagevalueprivate.h" @@ -772,31 +773,23 @@ engine_parse (GtkCssStyleProperty *property, GtkCssParser *parser, GFile *base) { - GtkThemingEngine *engine; - char *str; - - if (_gtk_css_parser_try (parser, "none", TRUE)) - return _gtk_css_value_new_from_theming_engine (gtk_theming_engine_load (NULL)); - - str = _gtk_css_parser_try_ident (parser, TRUE); - if (str == NULL) - { - _gtk_css_parser_error (parser, "Expected a valid theme name"); - return NULL; - } - - engine = gtk_theming_engine_load (str); - - if (engine == NULL) - { - _gtk_css_parser_error (parser, "Theming engine '%s' not found", str); - g_free (str); - return NULL; - } + return _gtk_css_engine_value_parse (parser); +} - g_free (str); +static void +engine_query (GtkCssStyleProperty *property, + const GtkCssValue *css_value, + GValue *value) +{ + g_value_init (value, GTK_TYPE_THEMING_ENGINE); + g_value_set_object (value, _gtk_css_engine_value_get_engine (css_value)); +} - return _gtk_css_value_new_from_theming_engine (engine); +static GtkCssValue * +engine_assign (GtkCssStyleProperty *property, + const GValue *value) +{ + return _gtk_css_engine_value_new (g_value_get_object (value)); } static GtkCssValue * @@ -1857,10 +1850,10 @@ _gtk_css_style_property_init_properties (void) engine_parse, NULL, NULL, - query_simple, - assign_simple, + engine_query, + engine_assign, NULL, - _gtk_css_value_new_from_theming_engine (gtk_theming_engine_load (NULL))); + _gtk_css_engine_value_new (gtk_theming_engine_load (NULL))); gtk_css_style_property_register ("transition", GTK_CSS_PROPERTY_TRANSITION, GTK_TYPE_ANIMATION_DESCRIPTION, |