From 0bd6c48315079978f36d00e2681d94ae8e504c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Sat, 6 Feb 2016 09:24:36 +0100 Subject: Add and use gtk_icon_helper_invalidate_for_change --- gtk/gtkiconhelper.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'gtk/gtkiconhelper.c') diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index 0b4b9b797e..ef05f83c2e 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -63,6 +63,22 @@ gtk_icon_helper_invalidate (GtkIconHelper *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) +{ + 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 gtk_icon_helper_take_definition (GtkIconHelper *self, GtkImageDefinition *def) @@ -147,8 +163,7 @@ static void gtk_icon_helper_style_changed (GtkCssGadget *gadget, GtkCssStyleChange *change) { - if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON)) - gtk_icon_helper_invalidate (GTK_ICON_HELPER (gadget)); + 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); -- cgit v1.2.1