]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkbutton.c
Apply a cleanup patch by Kjartan Maraas (#341812)
[~andy/gtk] / gtk / gtkbutton.c
index 980dd31bc39d44b310cf29cc7a08b203e95831a3..4c51a47d68493229109b4033cdc053f5a8f2eb7a 100644 (file)
@@ -1004,11 +1004,40 @@ gtk_button_unmap (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_button_parent_class)->unmap (widget);
 }
 
+static void
+gtk_button_update_image_spacing (GtkButton *button)
+{
+  GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (button);
+  GtkWidget *child; 
+  gint spacing;
+
+  /* Keep in sync with gtk_button_construct_child,
+   * we only want to update the spacing if the box 
+   * was constructed there.
+   */
+  if (!button->constructed || !priv->image)
+    return;
+
+  child = GTK_BIN (button)->child;
+  if (GTK_IS_ALIGNMENT (child))
+    {
+      child = GTK_BIN (child)->child;
+      if (GTK_IS_BOX (child))
+        {
+          gtk_widget_style_get (GTK_WIDGET (button),
+                                "image-spacing", &spacing,
+                                NULL);
+
+          gtk_box_set_spacing (GTK_BOX (child), spacing);
+        }
+    }   
+}
+
 static void
 gtk_button_style_set (GtkWidget *widget,
                      GtkStyle  *prev_style)
 {
-  gtk_button_construct_child (GTK_BUTTON (widget));
+  gtk_button_update_image_spacing (GTK_BUTTON (widget));
 }
 
 static void
@@ -1881,7 +1910,7 @@ gtk_button_screen_changed (GtkWidget *widget,
 
   show_image_connection =
     g_signal_connect (settings, "notify::gtk-button-images",
-                     G_CALLBACK (gtk_button_setting_changed), 0);
+                     G_CALLBACK (gtk_button_setting_changed), NULL);
   g_object_set_data (G_OBJECT (settings), 
                     I_("gtk-button-connection"),
                     GUINT_TO_POINTER (show_image_connection));