rem: compte_virement != compte_courant )
add: compte_virement != gsb_account_get_current_account () )
context: gboolean entree_ventilation_perd_focus_echeances ( GtkWidget *entree, GdkEventFocus *ev,						   gint *no_origine ){    gchar *texte;    texte = NULL;    switch ( GPOINTER_TO_INT ( no_origine ))    {	/* on sort des catégories */	case SCHEDULER_BREAKDOWN_FORM_CATEGORY :	    if ( strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree )))))	    {		/* si c'est un virement, on met le menu des types de l'autre compte */		/* si ce menu n'est pas déjà affiché */		gchar **tableau_char;		tableau_char = g_strsplit ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree )),					    ":",					    2 );		tableau_char[0] = g_strstrip ( tableau_char[0] );		if ( tableau_char[1] )		    tableau_char[1] = g_strstrip ( tableau_char[1] );		if ( strlen ( tableau_char[0] ) )		{		    if ( !strcmp ( tableau_char[0],				   _("Transfer") )			 && tableau_char[1]			 && strlen ( tableau_char[1]) )		    {			/* c'est un virement : on recherche le compte associé et on affiche les types de paiement */			if ( strcmp ( tableau_char[1],				      _("Deleted account") ) )			{			    /* recherche le no de compte du virement */			    gint compte_virement;			    GSList *list_tmp;			    compte_virement = -1;			    list_tmp = list_struct_accounts;			    while ( list_tmp )			    {				gint i;				i = gsb_account_get_no_account ( list_tmp -> data );				if ( !g_strcasecmp ( gsb_account_get_name (i),						     tableau_char[1] ) )				    compte_virement = i;				list_tmp = list_tmp -> next;			    }			    /* si on a touvé un compte de virement, que celui ci n'est pas le compte */			    /* courant et que son menu des types n'est pas encore affiché, on crée le menu */			    if ( compte_virement != -1				 &&				 compte_virement != compte_courant )			    {				/* si le menu affiché est déjà celui du compte de virement, on n'y touche pas */				if ( !GTK_WIDGET_VISIBLE ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] )				     ||				     ( recupere_no_compte ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] )				       !=				       compte_virement ))				{				    /* vérifie quel est le montant entré, affiche les types opposés de l'autre compte */				    GtkWidget *menu;				    if ( gtk_widget_get_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_BUDGETARY] ) == style_entree_formulaire[ENCLAIR] )					/* il y a un montant dans le crédit */					menu = creation_menu_types ( 1, compte_virement, 2  );				    else					/* il y a un montant dans le débit ou défaut */					menu = creation_menu_types ( 2, compte_virement, 2  );				    /* si un menu à été créé, on l'affiche */				    if ( menu )				    {					gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),								   menu );					gtk_widget_show ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] );				    }				    /* on associe le no de compte de virement au formulaire_echeancier pour le retrouver */				    /* rapidement s'il y a un chgt débit/crédit */				    gtk_object_set_data ( GTK_OBJECT ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),							  "compte_virement",							  GINT_TO_POINTER ( compte_virement ));				}			    }			    else				gtk_widget_hide ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] );			}			else			    gtk_widget_hide ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] );		    }		    else			gtk_widget_hide ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] );		}		else		    gtk_widget_hide ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] );		g_strfreev ( tableau_char );	    }	    else		texte = _("Categories : Sub-categories");	    break;	    /* sort des notes */	case SCHEDULER_BREAKDOWN_FORM_NOTES :	    if ( !strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree )))))		texte = _("Notes");	    break;	    /* sort du débit */	    /*   soit vide, soit change le menu des types s'il ne correspond pas */	case SCHEDULER_BREAKDOWN_FORM_DEBIT :	    if ( strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree ))))		 &&		 gtk_widget_get_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] )	    {		/* on  commence par virer ce qu'il y avait dans les crédits */		if ( gtk_widget_get_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CREDIT] ) == style_entree_formulaire[ENCLAIR] )		{		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CREDIT] ),					 "" );		    gtk_widget_set_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CREDIT],					   style_entree_formulaire[ENGRIS] );		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CREDIT]),					 _("Credit") );		}		/* comme il y a eu un changement de signe, on change aussi le type de l'opé associée */		/* s'il est affiché */		if ( GTK_WIDGET_VISIBLE ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] )		     &&		     GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ) -> menu ),							     "signe_menu" ))		     ==		     1 )		{		    GtkWidget *menu;		    menu = creation_menu_types ( 2,						 GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),											 "compte_virement" )),						 2  );		    if ( menu )			gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),						   menu );		    else			gtk_option_menu_remove_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ));		}	    }	    else		texte = _("Debit");	    break;	    /* sort du crédit */	case SCHEDULER_BREAKDOWN_FORM_CREDIT :	    if ( strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree ))))		 &&		 gtk_widget_get_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CREDIT] ) == style_entree_formulaire[ENCLAIR])	    {		/* on  commence par virer ce qu'il y avait dans les débits */		if ( gtk_widget_get_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT] ) == style_entree_formulaire[ENCLAIR] )		{		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT] ),					 "" );		    gtk_widget_set_style ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT],					   style_entree_formulaire[ENGRIS] );		    gtk_entry_set_text ( GTK_ENTRY ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_DEBIT]),					 _("Debit") );		}		/* comme il y a eu un changement de signe, on change aussi le type de l'opé associée */		/* s'il est affiché */		if ( GTK_WIDGET_VISIBLE ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] )		     &&		     GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ) -> menu ),							     "signe_menu" ))		     ==		     2 )		{		    GtkWidget *menu;		    menu = creation_menu_types ( 1,						 GPOINTER_TO_INT ( gtk_object_get_data ( GTK_OBJECT ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),											 "compte_virement" )),						 2  );		    if ( menu )			gtk_option_menu_set_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ),						   menu );		    else			gtk_option_menu_remove_menu ( GTK_OPTION_MENU ( widget_formulaire_ventilation_echeances[SCHEDULER_BREAKDOWN_FORM_CONTRA] ));		}	    }	    else		texte = _("Credit");	    break;	    /* sort de l'ib */	case SCHEDULER_BREAKDOWN_FORM_BUDGETARY :	    if ( !strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree )))))		texte = _("Budgetary line");	    break;	    /* sort de la pièce comptable */	case SCHEDULER_BREAKDOWN_FORM_VOUCHER :	    if ( !strlen ( g_strstrip ( (char *) gtk_entry_get_text ( GTK_ENTRY ( entree )))))		texte = _("Voucher");	    break;    }    /* l'entrée était vide, on remet le défaut */    if ( texte )    {	gtk_widget_set_style ( entree,			       style_entree_formulaire[ENGRIS] );	gtk_entry_set_text ( GTK_ENTRY ( entree ),			     texte );    }    return FALSE;}