summaryrefslogtreecommitdiff
path: root/gtk/gtkradiobutton.c
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2010-09-06 22:55:03 -0400
committerJohn (J5) Palmieri <johnp@redhat.com>2010-09-07 10:41:40 -0400
commit8a210673fb6f05abaa4ea05b7dcd17b06c7aca68 (patch)
tree8289e757b8145a2725d3af62466ade5237e1c482 /gtk/gtkradiobutton.c
parent278957a5a40cbb27750000f709cb8b53d2aa9885 (diff)
downloadgtk+-8a210673fb6f05abaa4ea05b7dcd17b06c7aca68.tar.gz
add gtk_radio_button_join_group method for bindings
* this mirrors the committed change for gtk_radio_action_join_group in commit 85b53969b24d318b219663841e678943516f443a * Due to object ownership issues it is impossible to correctly use get_group/set_group from a GI binding * join_group is safer because at the binding level it works with individual GtkRadioButton objects and not with the list of objects that gets modified in the library https://bugzilla.gnome.org/show_bug.cgi?id=628935
Diffstat (limited to 'gtk/gtkradiobutton.c')
-rw-r--r--gtk/gtkradiobutton.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c
index fc78eadb46..6881e105c7 100644
--- a/gtk/gtkradiobutton.c
+++ b/gtk/gtkradiobutton.c
@@ -347,6 +347,61 @@ gtk_radio_button_set_group (GtkRadioButton *radio_button,
}
/**
+ * gtk_radio_button_join_group:
+ * @radio_button: the #GtkRadioButton object
+ * @group_source: (allow-none): a radio button object whos group we are
+ * joining, or %NULL to remove the radio button from its group
+ *
+ * Joins a #GtkRadioButton object to the group of another #GtkRadioButton object
+ *
+ * Use this in language bindings instead of the gtk_radio_button_get_group()
+ * and gtk_radio_button_set_group() methods
+ *
+ * A common way to set up a group of radio buttons is the following:
+ * |[
+ * GtkRadioButton *radio_button;
+ * GtkRadioButton *last_button;
+ *
+ * while (/&ast; more buttons to add &ast;/)
+ * {
+ * radio_button = gtk_radio_button_new (...);
+ *
+ * gtk_radio_button_join_group (radio_button, last_button);
+ * last_button = radio_button;
+ * }
+ * ]|
+ *
+ * Since: 3.0
+ */
+void
+gtk_radio_button_join_group (GtkRadioButton *radio_button,
+ GtkRadioButton *group_source)
+{
+ g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button));
+ g_return_if_fail (group_source == NULL || GTK_IS_RADIO_BUTTON (group_source));
+
+ if (group_source)
+ {
+ GSList *group;
+ group = gtk_radio_button_get_group (group_source);
+
+ if (!group)
+ {
+ /* if we are not already part of a group we need to set up a new one
+ and then get the newly created group */
+ gtk_radio_button_set_group (group_source, NULL);
+ group = gtk_radio_button_get_group (group_source);
+ }
+
+ gtk_radio_button_set_group (radio_button, group);
+ }
+ else
+ {
+ gtk_radio_button_set_group (radio_button, NULL);
+ }
+}
+
+/**
* gtk_radio_button_new:
* @group: an existing radio button group, or %NULL if you are creating a new group.
*