summaryrefslogtreecommitdiff
path: root/gtk/gtkbutton.c
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-07-14 17:48:28 +0000
committerTim Janik <timj@src.gnome.org>1998-07-14 17:48:28 +0000
commit7702d2f8fcd8a8c81bbc5c556124303a04ecc522 (patch)
tree8c5bbe2834d7fec909e74fe002fbe965762f33ff /gtk/gtkbutton.c
parenta91be9352faad5e29728cc7e7e344eb5690096be (diff)
downloadgtk+-7702d2f8fcd8a8c81bbc5c556124303a04ecc522.tar.gz
don't destroy a buttons child if it isn't a label.
Tue Jul 14 19:12:12 1998 Tim Janik <timj@gtk.org> * gtk/gtkbutton.c (gtk_button_set_arg): don't destroy a buttons child if it isn't a label.
Diffstat (limited to 'gtk/gtkbutton.c')
-rw-r--r--gtk/gtkbutton.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index decbbe6812..d8002c62f1 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -234,16 +234,18 @@ gtk_button_set_arg (GtkObject *object,
switch (arg_id)
{
- GtkWidget *label;
+ GtkWidget *child;
case ARG_LABEL:
- if (GTK_BIN (button)->child)
- gtk_container_remove (GTK_CONTAINER (button), GTK_BIN (button)->child);
-
- label = gtk_label_new (GTK_VALUE_STRING(*arg) ? GTK_VALUE_STRING(*arg) : "");
- gtk_widget_show (label);
-
- gtk_container_add (GTK_CONTAINER (button), label);
+ child = GTK_BIN (button)->child;
+ if (!child)
+ child = gtk_widget_new (GTK_TYPE_LABEL,
+ "visible", TRUE,
+ "parent", button,
+ NULL);
+ if (GTK_IS_LABEL (child))
+ gtk_label_set (GTK_LABEL (child),
+ GTK_VALUE_STRING (*arg) ? GTK_VALUE_STRING (*arg) : "");
break;
case ARG_RELIEF:
gtk_button_set_relief (button, GTK_VALUE_ENUM (*arg));