Bonjour,

Je n'arrive pas à faire fonctionner des GtkRadioMenuItem, le programme plante lorsque je clique sur un menuitem. Voici le code de création des radio menu item:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  menu_scheme_list = NULL;
 
  menuitem_s_classic = gtk_radio_menu_item_new_with_label (menu_scheme_list,"classic");
  gtk_widget_show(menuitem_s_classic);
  gtk_container_add (GTK_CONTAINER (menu6), menuitem_s_classic);
  gtk_radio_menu_item_set_group(GTK_RADIO_MENU_ITEM (menuitem_s_classic),menu_scheme_list);
  menu_scheme_list = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM (menuitem_s_classic));
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem_s_classic), TRUE);
  g_signal_connect(G_OBJECT(menuitem_s_classic),"activate",G_CALLBACK(toggle_menuitem_s_classic),NULL);
 
  menuitem_s_cobalt = gtk_radio_menu_item_new_with_label (menu_scheme_list,"cobalt");
  gtk_widget_show(menuitem_s_cobalt);
  gtk_container_add (GTK_CONTAINER (menu6), menuitem_s_cobalt);
  gtk_radio_menu_item_set_group(GTK_RADIO_MENU_ITEM (menuitem_s_cobalt),menu_scheme_list);
  menu_scheme_list = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM (menuitem_s_cobalt));
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem_s_cobalt), FALSE);
  g_signal_connect(G_OBJECT(menuitem_s_cobalt),"activate",G_CALLBACK(toggle_menuitem_s_cobalt),NULL);
Et les callback:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void toggle_menuitem_s_classic(GtkWidget *widget, gpointer p)
{
  if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
 
  } else {
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_classic),TRUE);
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_cobalt),FALSE);
    LISTE_OPEN_FILES *l = liste_editor_open_files;
    while(l != NULL) {
      gtk_source_buffer_set_style_scheme(l->sBuf,s_classic);
      l = l->suiv;
    }
  }
}
 
void toggle_menuitem_s_cobalt(GtkWidget *widget, gpointer p)
{
  if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
 
  } else {
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_classic),FALSE);
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_cobalt),TRUE);
    LISTE_OPEN_FILES *l = liste_editor_open_files;
    while(l != NULL) {
      gtk_source_buffer_set_style_scheme(l->sBuf,s_cobalt);
      l = l->suiv;
    }
  }
}
Quand je commente les lignes avec gtk_check_menu_item_set_active, le programme ne plante pas, mais l'ancien menuitem activé reste activé, et celui sur lequel j'ai cliqué ne s'active pas.