... instead of GtkCssWidgetNode.
gtk_css_node_invalidate (GtkCssNode *cssnode,
GtkCssChange change)
{
+ cssnode->pending_changes |= change;
+
GTK_CSS_NODE_GET_CLASS (cssnode)->invalidate (cssnode, change);
gtk_css_node_set_invalid (cssnode, TRUE);
gtk_css_node_set_invalid (cssnode, FALSE);
+ change |= cssnode->pending_changes;
+ cssnode->pending_changes = 0;
+
changes = GTK_CSS_NODE_GET_CLASS (cssnode)->validate (cssnode, timestamp, change, parent_changes);
change = _gtk_css_change_for_child (change);
GtkCssNodeDeclaration *decl;
GtkCssStyle *style;
- guint invalid :1; /* set if node or a child is invalid */
+ GtkCssChange pending_changes; /* changes that accumulated since the style was last computed */
+
+ guint invalid :1; /* set if node or a child is invalid */
};
struct _GtkCssNodeClass
G_DEFINE_TYPE (GtkCssWidgetNode, gtk_css_widget_node, GTK_TYPE_CSS_NODE)
-static void
-gtk_css_widget_node_invalidate (GtkCssNode *node,
- GtkCssChange change)
-{
- GtkCssWidgetNode *widget_node = GTK_CSS_WIDGET_NODE (node);
-
- widget_node->pending_changes |= change;
-}
-
static void
gtk_css_widget_node_set_invalid (GtkCssNode *node,
gboolean invalid)
GtkBitmask *changes;
GtkCssStyle *style;
- change |= widget_node->pending_changes;
- widget_node->pending_changes = 0;
-
if (widget_node->widget == NULL)
return _gtk_bitmask_new ();
{
GtkCssNodeClass *node_class = GTK_CSS_NODE_CLASS (klass);
- node_class->invalidate = gtk_css_widget_node_invalidate;
node_class->validate = gtk_css_widget_node_validate;
node_class->set_invalid = gtk_css_widget_node_set_invalid;
node_class->create_widget_path = gtk_css_widget_node_create_widget_path;
GtkCssNode node;
GtkWidget *widget;
-
- GtkCssChange pending_changes;
};
struct _GtkCssWidgetNodeClass