forked from AuroraMiddleware/gtk
Make sure icons update on theme change
Gadgets don't connect to style-changed for widget nodes, and GtkImage uses its widget node for the icon helper. The visible effect of this is that symbolic icons don't change color when switching to the dark variant of Adwaita. Fix this by manually invalidating the icon helper.
This commit is contained in:
parent
b387a966ce
commit
f63e8edec6
@ -48,7 +48,7 @@ struct _GtkIconHelperPrivate {
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GtkIconHelper, gtk_icon_helper, GTK_TYPE_CSS_GADGET)
|
||||
|
||||
static void
|
||||
void
|
||||
gtk_icon_helper_invalidate (GtkIconHelper *self)
|
||||
{
|
||||
if (self->priv->rendered_surface != NULL)
|
||||
|
@ -138,6 +138,7 @@ gboolean _gtk_icon_helper_get_force_scale_pixbuf (GtkIconHelper *self);
|
||||
void _gtk_icon_helper_set_force_scale_pixbuf (GtkIconHelper *self,
|
||||
gboolean force_scale);
|
||||
|
||||
void gtk_icon_helper_invalidate (GtkIconHelper *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -1915,6 +1915,16 @@ gtk_image_style_updated (GtkWidget *widget)
|
||||
{
|
||||
GtkImage *image = GTK_IMAGE (widget);
|
||||
GtkImagePrivate *priv = image->priv;
|
||||
GtkStyleContext *context;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
if (context)
|
||||
{
|
||||
GtkCssStyleChange *change = gtk_style_context_get_change (context);
|
||||
|
||||
if (change && gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON))
|
||||
gtk_icon_helper_invalidate (priv->icon_helper);
|
||||
}
|
||||
|
||||
GTK_WIDGET_CLASS (gtk_image_parent_class)->style_updated (widget);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user