diff --git a/ChangeLog b/ChangeLog index ea0e3ce35b..31cb9c38ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-06-08 Matthias Clasen + + * 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 * gtk/gtkprintoperation-unix.c (finish_print): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index ea0e3ce35b..31cb9c38ca 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +2006-06-08 Matthias Clasen + + * 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 * gtk/gtkprintoperation-unix.c (finish_print): diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index 980dd31bc3..9b7d78b195 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -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