diff options
author | Timm Bäder <mail@baedert.org> | 2016-02-06 09:24:36 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2016-02-07 19:16:26 +0100 |
commit | 0bd6c48315079978f36d00e2681d94ae8e504c78 (patch) | |
tree | df5e7a342a3f050884971b4e914224bafbef290b /gtk/gtkiconhelper.c | |
parent | 0c80210685e2b60addbd7dd22c86b8536a79b142 (diff) | |
download | gtk+-0bd6c48315079978f36d00e2681d94ae8e504c78.tar.gz |
Add and use gtk_icon_helper_invalidate_for_change
Diffstat (limited to 'gtk/gtkiconhelper.c')
-rw-r--r-- | gtk/gtkiconhelper.c | 19 |
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); |