summaryrefslogtreecommitdiff
path: root/gtk/gtkcssprovider.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2012-11-29 17:13:59 +0100
committerAlexander Larsson <alexl@redhat.com>2012-11-30 14:53:30 +0100
commitfd4712590aea58d758b45021c238b443573a8c6a (patch)
treeca194ff821278671cae5cb996c086712c1a082ef /gtk/gtkcssprovider.c
parent9b989a1427d0ede4526cfa8cc371a889f283e307 (diff)
downloadgtk+-fd4712590aea58d758b45021c238b443573a8c6a.tar.gz
css: Use tree for gtk_css_provider_get_style_property
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r--gtk/gtkcssprovider.c14
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;
}