forked from AuroraMiddleware/gtk
add gtk_radio_button_join_group method for bindings
* this mirrors the committed change for gtk_radio_action_join_group in
commit 85b53969b2
* 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
This commit is contained in:
parent
278957a5a4
commit
8a210673fb
@ -346,6 +346,61 @@ gtk_radio_button_set_group (GtkRadioButton *radio_button,
|
|||||||
g_object_unref (radio_button);
|
g_object_unref (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 (/* more buttons to add */)
|
||||||
|
* {
|
||||||
|
* 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:
|
* gtk_radio_button_new:
|
||||||
* @group: an existing radio button group, or %NULL if you are creating a new group.
|
* @group: an existing radio button group, or %NULL if you are creating a new group.
|
||||||
|
@ -86,7 +86,8 @@ GtkWidget* gtk_radio_button_new_with_mnemonic_from_widget (GtkRadioButton *radio
|
|||||||
GSList* gtk_radio_button_get_group (GtkRadioButton *radio_button);
|
GSList* gtk_radio_button_get_group (GtkRadioButton *radio_button);
|
||||||
void gtk_radio_button_set_group (GtkRadioButton *radio_button,
|
void gtk_radio_button_set_group (GtkRadioButton *radio_button,
|
||||||
GSList *group);
|
GSList *group);
|
||||||
|
void gtk_radio_button_join_group (GtkRadioButton *radio_button,
|
||||||
|
GtkRadioButton *group_source);
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GTK_RADIO_BUTTON_H__ */
|
#endif /* __GTK_RADIO_BUTTON_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user