summaryrefslogtreecommitdiff
path: root/gtk/gtkiconhelper.c
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2016-02-06 09:24:36 +0100
committerTimm Bäder <mail@baedert.org>2016-02-07 19:16:26 +0100
commit0bd6c48315079978f36d00e2681d94ae8e504c78 (patch)
treedf5e7a342a3f050884971b4e914224bafbef290b /gtk/gtkiconhelper.c
parent0c80210685e2b60addbd7dd22c86b8536a79b142 (diff)
downloadgtk+-0bd6c48315079978f36d00e2681d94ae8e504c78.tar.gz
Add and use gtk_icon_helper_invalidate_for_change
Diffstat (limited to 'gtk/gtkiconhelper.c')
-rw-r--r--gtk/gtkiconhelper.c19
1 files changed, 17 insertions, 2 deletions
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);