Don't call construct_child here, since some apps make assumptions about

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.
This commit is contained in:
Matthias Clasen 2006-06-08 12:47:05 +00:00 committed by Matthias Clasen
parent fd3b835e29
commit bb6b1f152f
3 changed files with 42 additions and 1 deletions

View 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):

View 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):

View 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