... instead of passing a matcher.
The matcher code is now local to the CssProvider/CssSelector machinery.
GtkCssChange change)
{
const GtkCssNodeDeclaration *decl;
- GtkCssMatcher matcher;
- GtkCssStyle *parent;
GtkCssStyle *style;
GtkCssChange style_change;
created_styles++;
- parent = cssnode->parent ? cssnode->parent->style : NULL;
-
if (change & GTK_CSS_CHANGE_NEEDS_RECOMPUTE)
{
/* Need to recompute the change flags */
style_change = gtk_css_static_style_get_change (gtk_css_style_get_static_style (cssnode->style));
}
- _gtk_css_matcher_node_init (&matcher, cssnode);
-
style = gtk_css_static_style_new_compute (gtk_css_node_get_style_provider (cssnode),
- &matcher,
- parent,
+ cssnode,
style_change);
store_in_global_parent_cache (cssnode, decl, style);
static void
gtk_css_style_provider_lookup (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
+ GtkCssNode *node,
GtkCssLookup *lookup,
GtkCssChange *change)
{
GtkCssProvider *css_provider = GTK_CSS_PROVIDER (provider);
GtkCssProviderPrivate *priv = gtk_css_provider_get_instance_private (css_provider);
GtkCssRuleset *ruleset;
+ GtkCssMatcher matcher;
guint j;
int i;
GPtrArray *tree_rules;
if (_gtk_css_selector_tree_is_empty (priv->tree))
return;
- tree_rules = _gtk_css_selector_tree_match_all (priv->tree, matcher);
+ _gtk_css_matcher_node_init (&matcher, node);
+
+ tree_rules = _gtk_css_selector_tree_match_all (priv->tree, &matcher);
if (tree_rules)
{
- verify_tree_match_results (css_provider, matcher, tree_rules);
+ verify_tree_match_results (css_provider, &matcher, tree_rules);
for (i = tree_rules->len - 1; i >= 0; i--)
{
}
if (change)
- *change = _gtk_css_selector_tree_get_change_all (priv->tree, matcher);
+ *change = _gtk_css_selector_tree_get_change_all (priv->tree, &matcher);
}
static void
settings = gtk_settings_get_default ();
default_style = gtk_css_static_style_new_compute (GTK_STYLE_PROVIDER (settings),
NULL,
- NULL,
- TRUE);
+ 0);
g_object_set_data_full (G_OBJECT (settings), I_("gtk-default-style"),
default_style, clear_default_style);
}
GtkCssStyle *
gtk_css_static_style_new_compute (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
- GtkCssStyle *parent,
+ GtkCssNode *node,
GtkCssChange change)
{
GtkCssStaticStyle *result;
GtkCssLookup lookup;
+ GtkCssNode *parent;
_gtk_css_lookup_init (&lookup);
- if (matcher)
+ if (node)
gtk_style_provider_lookup (provider,
- matcher,
+ node,
&lookup,
change == 0 ? &change : NULL);
result->change = change;
+ if (node)
+ parent = gtk_css_node_get_parent (node);
+ else
+ parent = NULL;
+
_gtk_css_lookup_resolve (&lookup,
provider,
result,
- parent);
+ parent ? gtk_css_node_get_style (parent) : NULL);
_gtk_css_lookup_destroy (&lookup);
#ifndef __GTK_CSS_STATIC_STYLE_PRIVATE_H__
#define __GTK_CSS_STATIC_STYLE_PRIVATE_H__
-#include "gtk/gtkcssmatcherprivate.h"
#include "gtk/gtkcssstyleprivate.h"
G_BEGIN_DECLS
GtkCssStyle * gtk_css_static_style_get_default (void);
GtkCssStyle * gtk_css_static_style_new_compute (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
- GtkCssStyle *parent,
+ GtkCssNode *node,
GtkCssChange change);
void gtk_css_static_style_compute_value (GtkCssStaticStyle *style,
static void
gtk_style_cascade_lookup (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
+ GtkCssNode *node,
GtkCssLookup *lookup,
GtkCssChange *change)
{
item;
item = gtk_style_cascade_iter_next (cascade, &iter))
{
- gtk_style_provider_lookup (item, matcher, lookup,
+ gtk_style_provider_lookup (item, node, lookup,
change ? &iter_change : NULL);
if (change)
*change |= iter_change;
}
void
-gtk_style_provider_lookup (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
- GtkCssLookup *lookup,
- GtkCssChange *out_change)
+gtk_style_provider_lookup (GtkStyleProvider *provider,
+ GtkCssNode *node,
+ GtkCssLookup *lookup,
+ GtkCssChange *out_change)
{
GtkStyleProviderInterface *iface;
gtk_internal_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
- gtk_internal_return_if_fail (matcher != NULL);
+ gtk_internal_return_if_fail (GTK_IS_CSS_NODE (node));
gtk_internal_return_if_fail (lookup != NULL);
if (out_change)
if (!iface->lookup)
return;
- iface->lookup (provider, matcher, lookup, out_change);
+ iface->lookup (provider, node, lookup, out_change);
}
void
#include <glib-object.h>
#include "gtk/gtkcsskeyframesprivate.h"
#include "gtk/gtkcsslookupprivate.h"
-#include "gtk/gtkcssmatcherprivate.h"
+#include "gtk/gtkcssnodeprivate.h"
#include "gtk/gtkcssvalueprivate.h"
#include <gtk/gtktypes.h>
{
GTypeInterface g_iface;
- GtkCssValue * (* get_color) (GtkStyleProvider *provider,
+ GtkCssValue * (* get_color) (GtkStyleProvider *provider,
const char *name);
- GtkSettings * (* get_settings) (GtkStyleProvider *provider);
- GtkCssKeyframes * (* get_keyframes) (GtkStyleProvider *provider,
+ GtkSettings * (* get_settings) (GtkStyleProvider *provider);
+ GtkCssKeyframes * (* get_keyframes) (GtkStyleProvider *provider,
const char *name);
- int (* get_scale) (GtkStyleProvider *provider);
- void (* lookup) (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
+ int (* get_scale) (GtkStyleProvider *provider);
+ void (* lookup) (GtkStyleProvider *provider,
+ GtkCssNode *node,
GtkCssLookup *lookup,
GtkCssChange *out_change);
- void (* emit_error) (GtkStyleProvider *provider,
+ void (* emit_error) (GtkStyleProvider *provider,
GtkCssSection *section,
const GError *error);
/* signal */
- void (* changed) (GtkStyleProvider *provider);
+ void (* changed) (GtkStyleProvider *provider);
};
-GtkSettings * gtk_style_provider_get_settings (GtkStyleProvider *provider);
-GtkCssValue * gtk_style_provider_get_color (GtkStyleProvider *provider,
+GtkSettings * gtk_style_provider_get_settings (GtkStyleProvider *provider);
+GtkCssValue * gtk_style_provider_get_color (GtkStyleProvider *provider,
const char *name);
-GtkCssKeyframes * gtk_style_provider_get_keyframes (GtkStyleProvider *provider,
+GtkCssKeyframes * gtk_style_provider_get_keyframes (GtkStyleProvider *provider,
const char *name);
-int gtk_style_provider_get_scale (GtkStyleProvider *provider);
-void gtk_style_provider_lookup (GtkStyleProvider *provider,
- const GtkCssMatcher *matcher,
+int gtk_style_provider_get_scale (GtkStyleProvider *provider);
+void gtk_style_provider_lookup (GtkStyleProvider *provider,
+ GtkCssNode *node,
GtkCssLookup *lookup,
GtkCssChange *out_change);
-void gtk_style_provider_changed (GtkStyleProvider *provider);
+void gtk_style_provider_changed (GtkStyleProvider *provider);
-void gtk_style_provider_emit_error (GtkStyleProvider *provider,
+void gtk_style_provider_emit_error (GtkStyleProvider *provider,
GtkCssSection *section,
GError *error);