diff options
author | Tim Janik <timj@gtk.org> | 1998-04-18 20:33:35 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-04-18 20:33:35 +0000 |
commit | 57703d0170725cbd62bb02a13e1a7479a46e5aa3 (patch) | |
tree | 8dd43b377adb0d189c64a4de8f96e8b505be2dbb /gtk/gtkradiobutton.c | |
parent | e3b303c212e5a2616eafc0de2903ae35d6674f68 (diff) | |
download | gtk+-57703d0170725cbd62bb02a13e1a7479a46e5aa3.tar.gz |
new function ala gtk_radio_button_set_group. (gtk_radio_menu_item_init):
Sat Apr 18 22:18:12 1998 Tim Janik <timj@gtk.org>
* gtk/gtkradiomenuitem.h:
* gtk/gtkradiomenuitem.c (gtk_radio_menu_item_set_group): new function
ala gtk_radio_button_set_group.
(gtk_radio_menu_item_init): assure that we always have at least a group
that points to self.
* gtk/gtkradiobutton.c (gtk_radio_button_set_group): few cleanups and
added g_return_if_fail() statements.
(gtk_radio_button_init): assure that we always have at least a group
that points to self.
Diffstat (limited to 'gtk/gtkradiobutton.c')
-rw-r--r-- | gtk/gtkradiobutton.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c index c23833b5c3..bf9ead5a7d 100644 --- a/gtk/gtkradiobutton.c +++ b/gtk/gtkradiobutton.c @@ -82,40 +82,45 @@ gtk_radio_button_class_init (GtkRadioButtonClass *class) static void gtk_radio_button_init (GtkRadioButton *radio_button) { - radio_button->group = NULL; + radio_button->group = g_slist_prepend (NULL, radio_button); } void gtk_radio_button_set_group (GtkRadioButton *radio_button, GSList *group) { - GSList *tmp_list; - GtkRadioButton *tmp_button; - + g_return_if_fail (radio_button != NULL); + g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button)); + g_return_if_fail (!g_slist_find (group, radio_button)); + if (radio_button->group) { + GSList *slist; + radio_button->group = g_slist_remove (radio_button->group, radio_button); - tmp_list = radio_button->group; - while (tmp_list) + for (slist = radio_button->group; slist; slist = slist->next) { - tmp_button = tmp_list->data; - tmp_list = tmp_list->next; + GtkRadioButton *tmp_button; + + tmp_button = slist->data; tmp_button->group = radio_button->group; } } - + radio_button->group = g_slist_prepend (group, radio_button); - tmp_list = group; - - if (tmp_list) + + if (group) { - while (tmp_list) + GSList *slist; + + for (slist = group; slist; slist = slist->next) { - tmp_button = tmp_list->data; - tmp_list = tmp_list->next; - + GtkRadioButton *tmp_button; + + tmp_button = slist->data; + tmp_button->group = radio_button->group; } } |