GtkBitmask * _gtk_css_computed_values_compute_dependencies (GtkCssComputedValues *values, const GtkBitmask *parent_changes) { GtkBitmask *changes; gtk_internal_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), _gtk_bitmask_new ()); changes = _gtk_bitmask_copy (parent_changes); changes = _gtk_bitmask_intersect (changes, values->depends_on_parent); if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR)) changes = _gtk_bitmask_union (changes, values->depends_on_color); if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE)) changes = _gtk_bitmask_union (changes, values->depends_on_font_size); return changes; }
static void gtk_css_widget_node_style_changed (GtkCssNode *cssnode, GtkCssStyle *old_style, GtkCssStyle *new_style) { GtkCssWidgetNode *node; GtkBitmask *diff; node = GTK_CSS_WIDGET_NODE (cssnode); if (node->widget) gtk_widget_clear_path (node->widget); GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style); diff = gtk_css_style_get_difference (new_style, old_style); node->accumulated_changes = _gtk_bitmask_union (node->accumulated_changes, diff); _gtk_bitmask_free (diff); }