diff options
author | Alexander Larsson <alexl@redhat.com> | 2012-11-29 17:13:59 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2012-11-30 14:53:30 +0100 |
commit | fd4712590aea58d758b45021c238b443573a8c6a (patch) | |
tree | ca194ff821278671cae5cb996c086712c1a082ef /gtk/gtkcssprovider.c | |
parent | 9b989a1427d0ede4526cfa8cc371a889f283e307 (diff) | |
download | gtk+-fd4712590aea58d758b45021c238b443573a8c6a.tar.gz |
css: Use tree for gtk_css_provider_get_style_property
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r-- | gtk/gtkcssprovider.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index c9d82e78c0..e0b273a8db 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1457,6 +1457,7 @@ gtk_css_provider_get_style_property (GtkStyleProvider *provider, GtkCssProvider *css_provider = GTK_CSS_PROVIDER (provider); GtkCssProviderPrivate *priv = css_provider->priv; WidgetPropertyValue *val; + GPtrArray *tree_rules; GtkCssMatcher matcher; gboolean found = FALSE; gchar *prop_name; @@ -1465,22 +1466,20 @@ gtk_css_provider_get_style_property (GtkStyleProvider *provider, if (!_gtk_css_matcher_init (&matcher, path, state)) return FALSE; + tree_rules = _gtk_css_selector_tree_match_all (priv->tree, &matcher); + verify_tree_match_results (css_provider, &matcher, tree_rules); + prop_name = g_strdup_printf ("-%s-%s", g_type_name (pspec->owner_type), pspec->name); - for (i = priv->rulesets->len - 1; i >= 0; i--) + for (i = tree_rules->len - 1; i >= 0; i--) { - GtkCssRuleset *ruleset; - - ruleset = &g_array_index (priv->rulesets, GtkCssRuleset, i); + GtkCssRuleset *ruleset = tree_rules->pdata[i]; if (ruleset->widget_style == NULL) continue; - if (!gtk_css_ruleset_matches (ruleset, &matcher)) - continue; - for (val = ruleset->widget_style; val != NULL; val = val->next) { if (strcmp (val->name, prop_name) == 0) @@ -1507,6 +1506,7 @@ gtk_css_provider_get_style_property (GtkStyleProvider *provider, } g_free (prop_name); + g_ptr_array_free (tree_rules, TRUE); return found; } |