Bonjour à tous !!
J'ai une application comportant plusieurs menus. Dans un menu composé de 4 togglebuttons et un bouton normal, je souhaite après appui sur ce dernier remettre les 4 premiers en position "non appuyée" (raise).

Voici le code de la callback
Code C : 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
void
on_Fen_OPS_btn_Pfm_clicked             (GtkButton       *button,
                                        gpointer         user_data)
{
	// Déclarations
	GtkWidget *vbox;
	GtkWidget *Menu20_btn_Haut;
	GtkWidget *Menu20_btn_Bas;
	GtkWidget *Menu20_btn_Gauche;
	GtkWidget *Menu20_btn_Droite;
	GtkWidget *Menu20_btn_Axis;
	GladeXML *gxml;
	GList *list;
 
             // Recupère mon menu
	gxml = glade_xml_new ("../ch_menu.glade","Menu_20", NULL);
	vbox = glade_xml_get_widget (gxml, "Menu_20");
 
             // Je récupère les boutons du menus
          	Menu20_btn_Haut = glade_xml_get_widget (gxml, "Menu20_btn_Haut");
	Menu20_btn_Bas = glade_xml_get_widget (gxml, "Menu20_btn_Bas");
	Menu20_btn_Gauche = glade_xml_get_widget (gxml, "Menu20_btn_Gauche");
	Menu20_btn_Droite = glade_xml_get_widget (gxml, "Menu20_btn_Droite");
	Menu20_btn_Axis = glade_xml_get_widget (gxml, "Menu20_btn_Axis");
 
            // Je vide le container
	list = gtk_container_get_children(GTK_CONTAINER(button));
    while(list)
    {
        gtk_widget_destroy(GTK_WIDGET(list->data));
        list = g_list_next(list);
    }
    g_list_free(list);
 
	gtk_widget_show (vbox);
 
            // J'ajoute mon nouveau menu
	gtk_box_pack_start (GTK_BOX (GTK_WIDGET(button)), vbox, TRUE, TRUE, 0);
             // Je connecte mes signaux
	g_signal_connect_swapped ((gpointer) Menu20_btn_Haut, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Haut_clicked),
                            GTK_OBJECT (Menu20_btn_Bas));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Bas, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Bas_clicked),
                            GTK_OBJECT (Menu20_btn_Haut));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Gauche, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Gauche_clicked),
                            GTK_OBJECT (Menu20_btn_Droite));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Droite, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Droite_clicked),
                            GTK_OBJECT (Menu20_btn_Gauche));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Axis, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Axis_clicked),
                            GTK_OBJECT (Menu20_btn_Droite));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Axis, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Axis_clicked),
                            GTK_OBJECT (Menu20_btn_Gauche));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Axis, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Axis_clicked),
                            GTK_OBJECT (Menu20_btn_Bas));
	g_signal_connect_swapped ((gpointer) Menu20_btn_Axis, "clicked",
                            G_CALLBACK (on_Fen_OPS_Menu20_btn_Axis_clicked),
                            GTK_OBJECT (Menu20_btn_Haut));
}

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
 
void
on_Fen_OPS_Menu20_btn_Axis_clicked            (GtkButton       *button,
                                        gpointer         user_data)
{
             // Je mets le bouton en position "raise" (non appuyée)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button),FALSE);
             // je le grise
	gtk_widget_set_sensitive(GTK_WIDGET(button),FALSE);
             // Je dors 
	Sleep(1000);
            // Je dégrise mon bouton
	gtk_widget_set_sensitive(GTK_WIDGET(button),TRUE);
 
}
Le comportement attendu est le suivant :
Après appui sur le bouton normal (bouton AXIS), les 4 autres boutons (quelques soient leur état) doivent revenir en position "non appuyée", se griser. On attends 1s et on les dégrise.
Hors les boutons ne reviennent en position non appuyée qu'après avoir été dégrisé (fonctionnement constaté)
Donc je cherche à savoir s'il existe une priorité sur les fonctions propres à gtk ou si qqn peut expliquer ce comportement je suis preneur.