]> Pileus Git - ~andy/gtk/commitdiff
Don't call construct_child here, since some apps make assumptions about
authorMatthias Clasen <mclasen@redhat.com>
Thu, 8 Jun 2006 12:47:05 +0000 (12:47 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 8 Jun 2006 12:47:05 +0000 (12:47 +0000)
2006-06-08  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkbutton.c (gtk_button_style_set): Don't call
        construct_child here, since some apps make assumptions
        about the lifecycle of the constructed label.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkbutton.c

index ea0e3ce35b26e16790c1b70f09908747350be8a9..31cb9c38ca960a593c60e3168ef11ba9e5e1d854 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-08  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkbutton.c (gtk_button_style_set): Don't call
+       construct_child here, since some apps make assumptions 
+       about the lifecycle of the constructed label.  
+
 2006-06-08  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtkprintoperation-unix.c (finish_print):
index ea0e3ce35b26e16790c1b70f09908747350be8a9..31cb9c38ca960a593c60e3168ef11ba9e5e1d854 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-08  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkbutton.c (gtk_button_style_set): Don't call
+       construct_child here, since some apps make assumptions 
+       about the lifecycle of the constructed label.  
+
 2006-06-08  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtkprintoperation-unix.c (finish_print):
index 980dd31bc39d44b310cf29cc7a08b203e95831a3..9b7d78b1958f1c0c93e9e5826f802dcae8df6360 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