Beispiel #1
0
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;
}
Beispiel #2
0
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);
}