rem: g_signal_handlers_unblock_by_func ( G_OBJECT(devise_1), G_CALLBACK (devise_selectionnee), (gpointer) 1 ); g_signal_handlers_unblock_by_func ( G_OBJECT(devise_2), G_CALLBACK (devise_selectionnee), (gpointer) 0 );
context: create_change_menus (struct struct_devise *devise){  GtkWidget *menu, *item;  /* création du menu de la 1ère devise ( le menu comporte la devise courante et celle associée ) */  menu = gtk_menu_new ();  item = gtk_menu_item_new_with_label ( devise -> nom_devise );  g_object_set_data ( G_OBJECT ( item ), "adr_devise", devise );  gtk_menu_append ( GTK_MENU ( menu ), item );  gtk_widget_show ( item );  g_signal_handlers_block_by_func ( G_OBJECT(devise_1),				    G_CALLBACK (devise_selectionnee), 				    (gpointer) 1 );  g_signal_handlers_block_by_func ( G_OBJECT(devise_2),				    G_CALLBACK (devise_selectionnee), 				    (gpointer) 0 );  item = gtk_menu_item_new_with_label ( NOM_DEVISE_ASSOCIEE );  if (item)    {      g_object_set_data ( G_OBJECT ( item ),			  "adr_devise",			  g_object_get_data ( G_OBJECT ( GTK_OPTION_MENU ( option_menu_devises ) -> menu_item ),					      "adr_devise" ));      gtk_menu_append ( GTK_MENU ( menu ), item );      gtk_widget_show ( item );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( devise_1 ), menu );      g_object_set_data ( G_OBJECT (devise_1), "currency", devise );      g_object_set_data ( G_OBJECT (devise_1), "associate", devise_2 );      g_signal_connect ( G_OBJECT ( devise_1 ), "changed",			 GTK_SIGNAL_FUNC ( devise_selectionnee ),			 GINT_TO_POINTER ( 1 ));      gtk_widget_show ( menu );    }	    /* création du menu de la 2ème devise ( le menu comporte la devise courante et celle associée ) */  menu = gtk_menu_new ();  item = gtk_menu_item_new_with_label ( devise -> nom_devise );  g_object_set_data ( G_OBJECT ( item ), "adr_devise", devise );  gtk_menu_append ( GTK_MENU ( menu ), item );  gtk_widget_show ( item );  item = gtk_menu_item_new_with_label ( NOM_DEVISE_ASSOCIEE );  if (item)    {      g_object_set_data ( G_OBJECT ( item ),			  "adr_devise",			  g_object_get_data ( G_OBJECT ( GTK_OPTION_MENU ( option_menu_devises ) -> menu_item ),					      "adr_devise" ));      gtk_menu_append ( GTK_MENU ( menu ), item );      gtk_widget_show ( item );      gtk_option_menu_set_menu ( GTK_OPTION_MENU ( devise_2 ), menu );      g_object_set_data ( G_OBJECT (devise_2), "currency", devise );      g_object_set_data ( G_OBJECT (devise_2), "associate", devise_1 );      g_signal_connect ( G_OBJECT ( devise_2 ),			 "changed",			 GTK_SIGNAL_FUNC ( devise_selectionnee ),			 GINT_TO_POINTER ( 0 ));      gtk_widget_show ( menu );    }   /* choix des 1ère et 2ème devise */  gtk_option_menu_set_history ( GTK_OPTION_MENU ( devise_1 ),				!( devise -> une_devise_1_egale_x_devise_2 ));  gtk_option_menu_set_history ( GTK_OPTION_MENU ( devise_2 ),				devise -> une_devise_1_egale_x_devise_2 );  g_signal_handlers_unblock_by_func ( G_OBJECT(devise_1),				      G_CALLBACK (devise_selectionnee), 				      (gpointer) 1 );  g_signal_handlers_unblock_by_func ( G_OBJECT(devise_2),				      G_CALLBACK (devise_selectionnee), 				      (gpointer) 0 );}