rem: return FALSE;
add: return TRUE;
context: gboolean touches_champ_formulaire ( GtkWidget *widget,				    GdkEventKey *ev,				    gint *no_origine ){    gint origine;    GtkWidget *popup_cal;    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 && ( ev -> keyval == GDK_Return || ev -> keyval == GDK_KP_Enter ))	ev->keyval = GDK_Tab ;    switch ( ev -> keyval )    {	case GDK_Escape :		/* chap */	    p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	    gtk_widget_grab_focus ( CLIST_OPERATIONS );	    echap_formulaire();	    break;	case GDK_Tab :		/* tabulation */	    /* une tabulation passe au widget affich suivant */	    /* et retourne  la date ou enregistre l'op s'il est  la fin */	    gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),					   "key-press-event");	    /* on efface la slection en cours si c'est une entre ou un combofix */	    if ( GTK_IS_ENTRY ( widget ))		gtk_entry_select_region ( GTK_ENTRY ( widget ), 0, 0);	    else		if ( GTK_IS_COMBOFIX ( widget ))		    gtk_entry_select_region ( GTK_ENTRY ( GTK_COMBOFIX ( widget ) -> entry ), 0, 0);	    /* on fait perdre le focus au widget courant pour faire les changements automatiques si ncessaire */	    p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;	    gtk_widget_grab_focus ( CLIST_OPERATIONS );	    /* on donne le focus au widget suivant */	    origine = ( origine + 1 ) % ( TRANSACTION_FORM_WIDGET_NB -1 );	    while ( !( GTK_WIDGET_VISIBLE ( widget_formulaire_operations[origine] ) &&		       GTK_WIDGET_SENSITIVE ( widget_formulaire_operations[origine] ) &&		       ( GTK_IS_COMBOFIX ( widget_formulaire_operations[origine] ) ||			 GTK_IS_ENTRY ( widget_formulaire_operations[origine] ) ||			 GTK_IS_BUTTON ( widget_formulaire_operations[origine] ) )))		origine = ( origine + 1 ) % ( TRANSACTION_FORM_WIDGET_NB -1 );	    /* si on se retrouve sur la date et que etat.entree = 0, on enregistre l'opration */	    if ( origine == TRANSACTION_FORM_DATE && !etat.entree )	    {		fin_edition();		return TRUE;	    }	    /* si le prochain est le dbit, on vrifie s'il n'y a rien dans cette	       entre et s'il y a quelque chose dans l'entre du crdit */	    if ( origine == TRANSACTION_FORM_DEBIT )	    {		/* si le dbit est gris et le crdit est noir, on met sur le crdit */		if ( gtk_widget_get_style ( widget_formulaire_operations[TRANSACTION_FORM_DEBIT] ) == style_entree_formulaire[ENGRIS] &&		     gtk_widget_get_style ( widget_formulaire_operations[TRANSACTION_FORM_CREDIT] ) == style_entree_formulaire[ENCLAIR] )		    origine = TRANSACTION_FORM_CREDIT;	    }	    /* si le prochain est le crdit et que le dbit a t rempli,	       on se met sur la devise et on efface le crdit */	    if ( origine == TRANSACTION_FORM_CREDIT )		if ( gtk_widget_get_style ( widget_formulaire_operations[TRANSACTION_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] &&		     strlen(gtk_entry_get_text(GTK_ENTRY( widget_formulaire_operations[TRANSACTION_FORM_DEBIT] ))))		{		    origine = TRANSACTION_FORM_DEVISE;		    gtk_widget_set_style ( widget_formulaire_operations[TRANSACTION_FORM_CREDIT],					   style_entree_formulaire[ENGRIS] );		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_CREDIT] ),					 _("Credit") );		}	    /* on slectionne le contenu de la nouvelle entre */	    if ( GTK_IS_COMBOFIX ( widget_formulaire_operations[origine] ) )	    {		gtk_widget_grab_focus ( GTK_COMBOFIX ( widget_formulaire_operations[origine] ) -> entry );		gtk_entry_select_region ( GTK_ENTRY ( GTK_COMBOFIX ( widget_formulaire_operations[origine] ) -> entry ), 0, -1 );	    }	    else	    {		if ( GTK_IS_ENTRY ( widget_formulaire_operations[origine] ) )		    gtk_entry_select_region ( GTK_ENTRY ( widget_formulaire_operations[origine] ), 0, -1 );		gtk_widget_grab_focus ( widget_formulaire_operations[origine]  );	    }	    break;	case GDK_KP_Enter :		/* touches entre */	case GDK_Return :	    /*       gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),		     "key-press-event");*/	    /* si la touche CTRL est elle aussi active, alors c'est que l'on est	       probablement sur un champ de date et que l'on souhaite ouvrir	       un calendrier */	    if ( ( ev -> state & GDK_CONTROL_MASK ) == GDK_CONTROL_MASK )	    {		switch ( origine )		{		    case TRANSACTION_FORM_DATE :		    case TRANSACTION_FORM_VALUE_DATE :			popup_cal = gsb_calendar_new ( GTK_WIDGET ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) );			gtk_widget_grab_focus ( GTK_WIDGET ( popup_cal ) );			break ;		    default :			break ;		}	    }	    /* si la touche CTRL n'est pas active, alors on valide simplement	       la saisie de l'opration */	    else	    {		p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;		gtk_widget_grab_focus ( CLIST_OPERATIONS );		fin_edition();	    }	    break;	case GDK_KP_Add:		/* touches + */	case GDK_plus:	    /* si on est dans une entree de date, on augmente d'un jour	       (d'une semaine) la date */	    /* GDC : prise en compte de la date relle (18) FinGDC */	    if ( origine == TRANSACTION_FORM_DATE ||		 origine == TRANSACTION_FORM_VALUE_DATE )	    {		/*	  gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),			  "key-press-event");*/		/* si c'est la date d'opration et que le champ est vide, alors on		   rcupre la date du jour comme date d'opration */		if ( origine == TRANSACTION_FORM_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ), gsb_today() );		/* si c'est la date de valeur et que le champ est vide, alors on		   rcupre la date d'opration comme date de valeur */		if ( origine == TRANSACTION_FORM_VALUE_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		{		    /* si la date d'opration est vide elle aussi, alors on rcupre		       la date du jour comme date de valeur */		    if ( strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) ) == 0 ||			 g_strcasecmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ),  _("Date") ) == 0 )			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), gsb_today() );		    else			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) );		}		if ( ( ev -> state & GDK_SHIFT_MASK ) != GDK_SHIFT_MASK )		    inc_dec_date ( widget_formulaire_operations[origine], ONE_DAY );		else		    inc_dec_date ( widget_formulaire_operations[origine], ONE_WEEK );		return TRUE;	    }	    else if ( origine == TRANSACTION_FORM_CHEQUE )	/* Voucher number */	    {		increment_decrement_champ ( widget_formulaire_operations[origine], 1 );		return TRUE;	    }	    else 	    {		return FALSE;	    }	    break;	case GDK_KP_Subtract:		/* touches - */	case GDK_minus:	    /* si on est dans une entree de date, on diminue d'un jour (d'une semaine) la date */	    /* GDC : prise en compte de la date relle (18) FinGDC */	    if ( origine == TRANSACTION_FORM_DATE ||		 origine == TRANSACTION_FORM_VALUE_DATE )	    {		/*	  gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),			  "key-press-event");*/		/* si c'est la date d'opration et que le champ est vide, alors on		   rcupre la date du jour comme date d'opration */		if ( origine == TRANSACTION_FORM_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ), gsb_today() );		/* si c'est la date de valeur et que le champ est vide, alors on		   rcupre la date d'opration comme date de valeur */		if ( origine == TRANSACTION_FORM_VALUE_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		{		    /* si la date d'opration est vide elle aussi, alors on rcupre		       la date du jour comme date de valeur */		    if ( strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) ) == 0 ||			 g_strcasecmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ),  _("Date") ) == 0 )			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), gsb_today() );		    else			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) );		}		if ( ( ev -> state & GDK_SHIFT_MASK ) != GDK_SHIFT_MASK )		    inc_dec_date ( widget_formulaire_operations[origine], - ONE_DAY );		else		    inc_dec_date ( widget_formulaire_operations[origine], - ONE_WEEK );		return TRUE;	    }	    else if ( origine == TRANSACTION_FORM_CHEQUE )	/* Voucher number */	    {		increment_decrement_champ ( widget_formulaire_operations[origine], -1 );		return TRUE;	    }	    break;	case GDK_Page_Up :		/* touche PgUp */	case GDK_KP_Page_Up :	    /* si on est dans une entree de date, on augmente d'un mois (d'un an) la date */	    /* GDC : prise en compte de la date relle (18) FinGDC */	    if ( origine == TRANSACTION_FORM_DATE ||		 origine == TRANSACTION_FORM_VALUE_DATE )	    {		gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),					       "key-press-event");		/* si c'est la date d'opration et que le champ est vide, alors on		   rcupre la date du jour comme date d'opration */		if ( origine == TRANSACTION_FORM_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ), gsb_today() );		/* si c'est la date de valeur et que le champ est vide, alors on		   rcupre la date d'opration comme date de valeur */		if ( origine == TRANSACTION_FORM_VALUE_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		{		    /* si la date d'opration est vide elle aussi, alors on rcupre		       la date du jour comme date de valeur */		    if ( strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) ) == 0 ||			 g_strcasecmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ),  _("Date") ) == 0 )			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), gsb_today() );		    else			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) );		}		if ( ( ev -> state & GDK_SHIFT_MASK ) != GDK_SHIFT_MASK )		    inc_dec_date ( widget_formulaire_operations[origine], ONE_MONTH );		else		    inc_dec_date ( widget_formulaire_operations[origine], ONE_YEAR );		return TRUE;	    }	    break;	case GDK_Page_Down :		/* touche PgDown */	case GDK_KP_Page_Down :	    /* si on est dans une entree de date, on augmente d'un mois (d'un an) la date */	    /* GDC : prise en compte de la date relle (18) FinGDC */	    if ( origine == TRANSACTION_FORM_DATE ||		 origine == TRANSACTION_FORM_VALUE_DATE )	    {		gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),					       "key-press-event");		/* si c'est la date d'opration et que le champ est vide, alors on		   rcupre la date du jour comme date d'opration */		if ( origine == TRANSACTION_FORM_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ), gsb_today() );		/* si c'est la date de valeur et que le champ est vide, alors on		   rcupre la date d'opration comme date de valeur */		if ( origine == TRANSACTION_FORM_VALUE_DATE &&		     strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[origine] ) ) ) ) == 0 )		{		    /* si la date d'opration est vide elle aussi, alors on rcupre		       la date du jour comme date de valeur */		    if ( strlen ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) ) == 0 ||			 g_strcasecmp ( g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ),  _("Date") ) == 0 )			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), gsb_today() );		    else			gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_VALUE_DATE] ), g_strstrip ( (gchar *) gtk_entry_get_text ( GTK_ENTRY ( widget_formulaire_operations[TRANSACTION_FORM_DATE] ) ) ) );		}		if ( ( ev -> state & GDK_SHIFT_MASK ) != GDK_SHIFT_MASK )		    inc_dec_date ( widget_formulaire_operations[origine], - ONE_MONTH );		else		    inc_dec_date ( widget_formulaire_operations[origine], - ONE_YEAR );		return TRUE;	    }	    break;	default:	    /* Reverting to default handler */	    return FALSE;	    break;    }    return FALSE;}