GtkSpinner: Pay attention to style changes
authorMatthias Clasen <mclasen@redhat.com>
Sat, 25 Jan 2020 01:54:50 +0000 (20:54 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 25 Jan 2020 01:55:42 +0000 (20:55 -0500)
Make GtkIcon redraw and resize when style changes
require it.

gtk/gtkspinner.c

index 8d57a82ca0b7c2dc6e8d753d2cc6babeaaa3c673..92d6ce6b3292eb452646531ecf75a10d82fbe5a5 100644 (file)
@@ -123,6 +123,29 @@ gtk_spinner_snapshot (GtkWidget   *widget,
                                gtk_widget_get_height (widget));
 }
 
+static void
+gtk_spinner_style_updated (GtkWidget *widget)
+{ 
+  GtkStyleContext *context; 
+  GtkCssStyleChange *change = NULL;
+  
+  context = gtk_widget_get_style_context (widget);
+  change = gtk_style_context_get_change (context);
+  
+  GTK_WIDGET_CLASS (gtk_spinner_parent_class)->style_updated (widget);
+  
+  if (change == NULL ||
+      gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_SIZE))
+    {
+      gtk_widget_queue_resize (widget);
+    }
+  else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_TEXTURE) ||
+           gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON_REDRAW))
+    {
+      gtk_widget_queue_draw (widget);
+    }
+}
+
 static gboolean
 gtk_spinner_get_active (GtkSpinner *spinner)
 {
@@ -195,6 +218,7 @@ gtk_spinner_class_init (GtkSpinnerClass *klass)
   widget_class = GTK_WIDGET_CLASS(klass);
   widget_class->snapshot = gtk_spinner_snapshot;
   widget_class->measure = gtk_spinner_measure;
+  widget_class->style_updated = gtk_spinner_style_updated;
 
   /* GtkSpinner:active:
    *