stylecontext: Change arguments for build_properties

Instead of passing the style declaration, take the node's style
declaration. Add arguments to allow overriding the state for the one
case where this didn't work.
This commit is contained in:
Benjamin Otte 2015-01-24 20:52:34 +01:00
parent 0e3da2f7cf
commit 6f99a3cdb0

View File

@ -793,22 +793,29 @@ update_properties (GtkStyleContext *context,
static GtkCssStyle *
build_properties (GtkStyleContext *context,
GtkCssNode *cssnode,
const GtkCssNodeDeclaration *decl)
gboolean override_state,
GtkStateFlags state)
{
GtkStyleContextPrivate *priv;
const GtkCssNodeDeclaration *decl;
GtkCssMatcher matcher;
GtkWidgetPath *path;
GtkCssStyle *parent;
GtkCssStyle *style;
priv = context->priv;
decl = gtk_css_node_get_declaration (cssnode);
parent = gtk_css_node_get_parent_style (context, cssnode);
style = lookup_in_global_parent_cache (context, parent, decl);
if (style)
return g_object_ref (style);
path = create_query_path (context, decl, cssnode == gtk_style_context_get_root (context));
path = create_query_path (context,
decl,
cssnode == gtk_style_context_get_root (context));
if (override_state)
gtk_widget_path_iter_set_state (path, -1, state);
if (_gtk_css_matcher_init (&matcher, path))
style = gtk_css_static_style_new_compute (GTK_STYLE_PROVIDER_PRIVATE (priv->cascade),
@ -841,7 +848,7 @@ gtk_style_context_lookup_style (GtkStyleContext *context)
if (values)
return values;
values = build_properties (context, cssnode, gtk_css_node_get_declaration (cssnode));
values = build_properties (context, cssnode, FALSE, 0);
gtk_css_node_set_style (cssnode, values);
g_object_unref (values);
@ -866,7 +873,7 @@ gtk_style_context_lookup_style_for_state (GtkStyleContext *context,
gtk_css_node_declaration_set_state (&decl, state);
values = build_properties (context,
context->priv->cssnode,
decl);
TRUE, state);
gtk_css_node_declaration_unref (decl);
return values;
@ -2955,7 +2962,7 @@ _gtk_style_context_validate (GtkStyleContext *context,
{
GtkCssStyle *style, *static_style;
static_style = build_properties (context, cssnode, gtk_css_node_get_declaration (cssnode));
static_style = build_properties (context, cssnode, FALSE, 0);
style = gtk_css_animated_style_new (static_style,
priv->parent ? gtk_style_context_lookup_style (priv->parent) : NULL,
timestamp,
@ -3083,7 +3090,8 @@ gtk_style_context_invalidate (GtkStyleContext *context)
root = gtk_style_context_get_root (context);
style = build_properties (context,
root,
gtk_css_node_get_declaration (root));
FALSE,
0);
gtk_css_node_set_style (root, style);
g_object_unref (style);