summaryrefslogtreecommitdiff
path: root/gtk/gtkcssprovider.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r--gtk/gtkcssprovider.c28
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");