rem: gtk_menu_popup ( GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, gtk_get_current_event_time()); gtk_widget_show (menu);
context: gboolean gsb_transactions_list_title_column_button_press ( GtkWidget *button,							   GdkEventButton *ev,							   gint *no_column ){    GtkWidget *menu, *menu_item;    gint i;    gint active_sort;    if ( ev -> button != 3 )	return FALSE;    menu = gtk_menu_new ();    /*  ligne trier par */    menu_item = gtk_menu_item_new_with_label ( _("Sort list by :") );    /*     les 2 signaux sont bloqués pour éviter que la ligne s'affiche comme un bouton */    /* pas réussi à faire autrement... */    g_signal_connect ( G_OBJECT ( menu_item),		       "enter-notify-event",		       G_CALLBACK ( gtk_true ),		       NULL );    g_signal_connect ( G_OBJECT ( menu_item),		       "motion-notify-event",		       G_CALLBACK ( gtk_true ),		       NULL );    gtk_menu_append ( menu,		      menu_item );    gtk_widget_show_all ( menu_item );    menu_item = gtk_separator_menu_item_new ();    gtk_menu_append ( menu,		      menu_item );    gtk_widget_show ( menu_item );    active_sort = gsb_account_get_column_sort ( compte_courant,						GPOINTER_TO_INT ( no_column ));    /*     get the name of the labels of the columns and put them in a menu */    for ( i=0 ; i<4 ; i++ )    {	gchar *temp;	switch ( tab_affichage_ope[i][GPOINTER_TO_INT (no_column)] )	{	    case 0:		temp = NULL;		break;	    default:		temp = g_slist_nth_data ( liste_labels_titres_colonnes_liste_ope,					  tab_affichage_ope[i][GPOINTER_TO_INT (no_column)] - 1 );	}	if ( temp	     &&	     strcmp ( temp,		      N_("Balance")))	{	    if ( i )		menu_item = gtk_radio_menu_item_new_with_label_from_widget ( GTK_RADIO_MENU_ITEM ( menu_item ),									     temp );	    else		menu_item = gtk_radio_menu_item_new_with_label ( NULL,								 temp );	    if ( tab_affichage_ope[i][GPOINTER_TO_INT (no_column)] == active_sort )		gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM ( menu_item ),						 TRUE );	    g_object_set_data ( G_OBJECT ( menu_item ),				"no_sort",				GINT_TO_POINTER (tab_affichage_ope[i][GPOINTER_TO_INT (no_column)]));	    g_signal_connect ( G_OBJECT(menu_item),			       "activate",			       G_CALLBACK ( gsb_transactions_list_change_sort_type ),			       no_column );	    gtk_menu_append ( menu,			      menu_item );	    gtk_widget_show ( menu_item );	}    }    gtk_menu_popup ( GTK_MENU(menu),		     NULL,		     NULL,		     NULL,		     NULL,		     3,		     gtk_get_current_event_time());    gtk_widget_show (menu);    return FALSE;}