summaryrefslogtreecommitdiff
path: root/gtk/gtkradiobutton.c
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-04-18 20:33:35 +0000
committerTim Janik <timj@src.gnome.org>1998-04-18 20:33:35 +0000
commit57703d0170725cbd62bb02a13e1a7479a46e5aa3 (patch)
tree8dd43b377adb0d189c64a4de8f96e8b505be2dbb /gtk/gtkradiobutton.c
parente3b303c212e5a2616eafc0de2903ae35d6674f68 (diff)
downloadgtk+-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.c37
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;
}
}