void gtk_icon_helper_invalidate_for_change (GtkIconHelper *self, GtkCssStyleChange *change) { GtkIconHelperPrivate *priv = self->priv; if (change && ((gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SYMBOLIC_ICON) && priv->rendered_surface_is_symbolic) || (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON) && !priv->rendered_surface_is_symbolic))) { gtk_icon_helper_invalidate (self); } }
static void node_style_changed_cb (GtkCssNode *node, GtkCssStyleChange *change, GtkWidget *widget) { if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_CLIP)) gtk_widget_queue_resize (widget); else gtk_widget_queue_draw (widget); }
void gtk_icon_helper_invalidate_for_change (GtkIconHelper *self, GtkCssStyleChange *change) { if (change == NULL || ((gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SYMBOLIC_ICON) && self->texture_is_symbolic) || (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON) && !self->texture_is_symbolic))) { /* Avoid the queue_resize in gtk_icon_helper_invalidate */ g_clear_object (&self->paintable); self->texture_is_symbolic = FALSE; if (change == NULL || (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_SIZE) && !GTK_IS_CSS_TRANSIENT_NODE (self->node))) gtk_widget_queue_resize (self->owner); } }
static void gtk_switch_style_updated (GtkWidget *widget) { GtkSwitch *self = GTK_SWITCH (widget); GtkStyleContext *context; GtkCssStyleChange *change; GTK_WIDGET_CLASS (gtk_switch_parent_class)->style_updated (widget); context = gtk_widget_get_style_context (widget); change = gtk_style_context_get_change (context); if (change == NULL || gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT)) gtk_switch_create_pango_layouts (self); }