diff options
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r-- | gtk/gtkcssprovider.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 97063563bf..e2be9cf7b8 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -86,15 +86,10 @@ struct _GtkCssProviderClass typedef struct GtkCssRuleset GtkCssRuleset; typedef struct _GtkCssScanner GtkCssScanner; -typedef struct _PropertyValue PropertyValue; +typedef GtkCssLookupValue PropertyValue; typedef enum ParserScope ParserScope; typedef enum ParserSymbol ParserSymbol; -struct _PropertyValue { - GtkCssStyleProperty *property; - GtkCssValue *value; - GtkCssSection *section; -}; struct GtkCssRuleset { @@ -268,14 +263,17 @@ gtk_css_ruleset_add (GtkCssRuleset *ruleset, GtkCssSection *section) { guint i; + guint id; g_return_if_fail (ruleset->owns_styles || ruleset->n_styles == 0); ruleset->owns_styles = TRUE; + id = _gtk_css_style_property_get_id (property); + for (i = 0; i < ruleset->n_styles; i++) { - if (ruleset->styles[i].property == property) + if (ruleset->styles[i].id == id) { _gtk_css_value_unref (ruleset->styles[i].value); ruleset->styles[i].value = NULL; @@ -289,7 +287,7 @@ gtk_css_ruleset_add (GtkCssRuleset *ruleset, ruleset->n_styles++; ruleset->styles = g_realloc (ruleset->styles, ruleset->n_styles * sizeof (PropertyValue)); ruleset->styles[i].value = NULL; - ruleset->styles[i].property = property; + ruleset->styles[i].id = id; } ruleset->styles[i].value = value; @@ -481,16 +479,12 @@ gtk_css_style_provider_lookup (GtkStyleProvider *provider, for (j = 0; j < ruleset->n_styles; j++) { - GtkCssStyleProperty *prop = ruleset->styles[j].property; - guint id = _gtk_css_style_property_get_id (prop); + guint id = ruleset->styles[j].id; if (!gtk_css_lookup_is_missing (lookup, id)) continue; - gtk_css_lookup_set (lookup, - id, - ruleset->styles[j].section, - ruleset->styles[j].value); + gtk_css_lookup_set (lookup, id, (GtkCssLookupValue *)&ruleset->styles[j]); } } @@ -1400,8 +1394,8 @@ compare_properties (gconstpointer a, gconstpointer b, gpointer style) const guint *ub = b; PropertyValue *styles = style; - return strcmp (_gtk_style_property_get_name (GTK_STYLE_PROPERTY (styles[*ua].property)), - _gtk_style_property_get_name (GTK_STYLE_PROPERTY (styles[*ub].property))); + return strcmp (_gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (styles[*ua].id))), + _gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (styles[*ub].id)))); } static void @@ -1428,7 +1422,7 @@ gtk_css_ruleset_print (const GtkCssRuleset *ruleset, { PropertyValue *prop = &ruleset->styles[sorted[i]]; g_string_append (str, " "); - g_string_append (str, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (prop->property))); + g_string_append (str, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (prop->id)))); g_string_append (str, ": "); _gtk_css_value_print (prop->value, str); g_string_append (str, ";\n"); |