diff options
author | Benjamin Otte <otte@redhat.com> | 2012-03-17 21:09:51 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:08 +0200 |
commit | 8dbe8c83491c5877c9b19928f257ec7a671cb45e (patch) | |
tree | 937880e83a99ab80678f76492b3997038acb7725 /gtk/gtkcssprovider.c | |
parent | b0b6c8ad4b9120bdc30d2fd81d572dfb060f4ed1 (diff) | |
download | gtk+-8dbe8c83491c5877c9b19928f257ec7a671cb45e.tar.gz |
syleprovider: Add a vfunc to get the changes
This way we can check what changes are even interesting for our matcher.
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r-- | gtk/gtkcssprovider.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 93201007aa..022d408ebd 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1299,6 +1299,12 @@ gtk_css_ruleset_matches (GtkCssRuleset *ruleset, return _gtk_css_selector_matches (ruleset->selector, matcher); } +static GtkCssChange +gtk_css_ruleset_get_change (GtkCssRuleset *ruleset) +{ + return _gtk_css_selector_get_change (ruleset->selector); +} + static void gtk_css_scanner_destroy (GtkCssScanner *scanner) { @@ -1627,11 +1633,42 @@ gtk_css_style_provider_lookup (GtkStyleProviderPrivate *provider, } } +static GtkCssChange +gtk_css_style_provider_get_change (GtkStyleProviderPrivate *provider, + const GtkCssMatcher *matcher) +{ + GtkCssProvider *css_provider; + GtkCssProviderPrivate *priv; + GtkCssChange change = 0; + int i; + + css_provider = GTK_CSS_PROVIDER (provider); + priv = css_provider->priv; + + for (i = priv->rulesets->len - 1; i >= 0; i--) + { + GtkCssRuleset *ruleset; + + ruleset = &g_array_index (priv->rulesets, GtkCssRuleset, i); + + if (ruleset->styles == NULL) + continue; + + if (!gtk_css_ruleset_matches (ruleset, matcher)) + continue; + + change |= gtk_css_ruleset_get_change (ruleset); + } + + return change; +} + static void gtk_css_style_provider_private_iface_init (GtkStyleProviderPrivateInterface *iface) { iface->get_color = gtk_css_style_provider_get_color; iface->lookup = gtk_css_style_provider_lookup; + iface->get_change = gtk_css_style_provider_get_change; } static void |