A radio menu item is a check menu item that belongs to a group.
At each instant exactly one of the radio menu items from a group is selected.
The group list does not need to be freed, as each RadioMenuItem will remove itself and its list item when it is destroyed.
The correct way to create a group of radio menu items is approximatively this:
GSList *group = NULL;
GtkWidget *item;
gint i;
for (i = 0; i < 5; i++)
{
item = gtk_radio_menu_item_new_with_label (group, "This is an example");
group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item));
if (i == 1)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
}
menuitem
├── radio.left
╰── <child>
nuItem has a main CSS node with
name menuitem, and a subnode with name radio, which gets the .left or .right style class.
Example: RadioMenuItem:
public class Application : Gtk.Window {
public Application () {
// Prepare Gtk.Window:
this.title = "My Gtk.RadioMenuItem";
this.window_position = Gtk.WindowPosition.CENTER;
this.destroy.connect (Gtk.main_quit);
// MenuBar:
Gtk.MenuBar bar = new Gtk.MenuBar ();
this.add (bar);
// File:
Gtk.MenuItem item_file = new Gtk.MenuItem.with_label ("File");
bar.add (item_file);
Gtk.Menu filemenu = new Gtk.Menu ();
item_file.set_submenu (filemenu);
Gtk.RadioMenuItem item_first = new Gtk.RadioMenuItem.with_label (null, "First");
unowned SList<Gtk.RadioMenuItem> group = item_first.get_group ();
item_first.set_active (true);
filemenu.add (item_first);
Gtk.RadioMenuItem item_second = new Gtk.RadioMenuItem.with_label (group, "Second");
filemenu.add (item_second);
}
public static int main (string[] args) {
Gtk.init (ref args);
Application app = new Application ();
app.show_all ();
Gtk.main ();
return 0;
}
}
valac --pkg gtk+-3.0 Gtk.RadioMenuItem.vala