diff options
author | Tim Janik <timj@gtk.org> | 1998-07-14 17:48:28 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-07-14 17:48:28 +0000 |
commit | 7702d2f8fcd8a8c81bbc5c556124303a04ecc522 (patch) | |
tree | 8c5bbe2834d7fec909e74fe002fbe965762f33ff /gtk/gtkbutton.c | |
parent | a91be9352faad5e29728cc7e7e344eb5690096be (diff) | |
download | gtk+-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.c | 18 |
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)); |