void gtk_icon_helper_invalidate (GtkIconHelper *self) { g_clear_object (&self->paintable); self->texture_is_symbolic = FALSE; if (!GTK_IS_CSS_TRANSIENT_NODE (self->node)) gtk_widget_queue_resize (self->owner); }
static void gtk_icon_helper_style_changed (GtkCssGadget *gadget, GtkCssStyleChange *change) { gtk_icon_helper_invalidate_for_change (GTK_ICON_HELPER (gadget), change); if (!GTK_IS_CSS_TRANSIENT_NODE (gtk_css_gadget_get_node (gadget))) GTK_CSS_GADGET_CLASS (gtk_icon_helper_parent_class)->style_changed (gadget, change); }
static void gtk_icon_helper_invalidate (GtkIconHelper *self) { if (self->priv->rendered_surface != NULL) { cairo_surface_destroy (self->priv->rendered_surface); self->priv->rendered_surface = NULL; self->priv->rendered_surface_is_symbolic = FALSE; } if (!GTK_IS_CSS_TRANSIENT_NODE (gtk_css_gadget_get_node (GTK_CSS_GADGET (self)))) gtk_widget_queue_resize (gtk_css_gadget_get_owner (GTK_CSS_GADGET (self))); }
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); } }