rem: ev->keyval = GDK_Tab ;
add: evenement->keyval = GDK_Tab ;
context: gboolean appui_touche_ventilation_echeances ( GtkWidget *entree, GdkEventKey *evenement,					      gint *no_origine ){    gint origine;    origine = GPOINTER_TO_INT ( no_origine );    /*   si etat.entree = 1, la touche entre finit l'opration (	 fonction par dfaut ) sinon elle fait comme tab */    if ( !etat.entree && ( evenement -> keyval == GDK_Return || evenement -> keyval == GDK_KP_Enter ))	ev->keyval = GDK_Tab ;    switch (evenement->keyval)    {	case GDK_Down :		/* touches flche bas */	case GDK_KP_Down :	case GDK_Up :		/* touches flche haut */	case GDK_KP_Up :	    gtk_signal_emit_stop_by_name ( GTK_OBJECT ( entree ),					   "key_press_event");	    gtk_widget_grab_focus ( entree );	    break;	case GDK_Tab:	    gtk_signal_emit_stop_by_name ( GTK_OBJECT ( entree ),					   "key_press_event");	    /* on efface la slection en cours si c'est une entre ou un combofix */	    if ( GTK_IS_ENTRY ( entree ))		gtk_entry_select_region ( GTK_ENTRY ( entree ), 0, 0);	    else		if ( GTK_IS_COMBOFIX ( entree ))		    gtk_entry_select_region ( GTK_ENTRY(GTK_COMBOFIX(entree) -> entry),					      0, 0);	    /* on donne le focus au widget suivant */	    origine = (origine + 1 ) % SCHEDULER_BREAKDOWN_FORM_TOTAL_WIDGET;	    while ( !(GTK_WIDGET_VISIBLE ( widget_formulaire_ventilation_echeances[origine] )		      &&		      GTK_WIDGET_SENSITIVE ( widget_formulaire_ventilation_echeances[origine] )		      &&		      ( GTK_IS_COMBOFIX (widget_formulaire_ventilation_echeances[origine] )			||			GTK_IS_ENTRY ( widget_formulaire_ventilation_echeances[origine] )			||			GTK_IS_BUTTON ( widget_formulaire_ventilation_echeances[origine] ) )))		origine = (origine + 1 ) % SCHEDULER_BREAKDOWN_FORM_TOTAL_WIDGET;	    /*       si on se retrouve sur les catg et que etat.entree = 0, on enregistre l'oprations */	    if ( !origine && !etat.entree )	    {		fin_edition_ventilation_echeances();		return(FALSE);	    }	    /* si on se retrouve sur le crdit et qu'il y a qque chose dans le dbit, on passe au suivant */	    /*        ce niveau, il n'y a pas eu encore de focus out donc on peut tester par strlen */	    if ( origine == SCHEDULER_BREAKDOWN_FORM_CREDIT		 &&		 strlen ( (char *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT] ))))		origine = (origine + 1 ) % SCHEDULER_BREAKDOWN_FORM_TOTAL_WIDGET;	    /* on slectionne le contenu de la nouvelle entre */	    if ( GTK_IS_COMBOFIX ( widget_formulaire_ventilation_echeances[origine] ) )	    {		gtk_widget_grab_focus ( GTK_COMBOFIX ( widget_formulaire_ventilation_echeances[origine] ) -> entry );  		gtk_entry_select_region ( GTK_ENTRY ( GTK_COMBOFIX ( widget_formulaire_ventilation_echeances[origine] ) -> entry ),					  0,					  -1 );	    }	    else	    {		if ( GTK_IS_ENTRY ( widget_formulaire_ventilation_echeances[origine] ) )		    gtk_entry_select_region ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[origine] ),					      0,					      -1 );		gtk_widget_grab_focus ( widget_formulaire_ventilation_echeances[origine]  );	    }	    break;	case GDK_KP_Enter:	case GDK_Return:	    gtk_signal_emit_stop_by_name ( GTK_OBJECT ( entree ),					   "key_press_event");	    fin_edition_ventilation_echeances ();	    break;	case GDK_Escape :	    echap_formulaire_ventilation_echeances ();	    break;	default:	    return FALSE;    }    return TRUE;}