rem: gtk_widget_grab_focus ( CLIST_OPERATIONS );
context: gboolean touches_champ_formulaire ( GtkWidget *widget,				GdkEventKey *ev,				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       &&       ( ev->keyval == 65293	 ||	 ev->keyval == 65421 ))    ev->keyval = 65289;  switch (ev->keyval)    {      /* chap */    case GDK_Escape:      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;      gtk_widget_grab_focus ( CLIST_OPERATIONS );      echap_formulaire();      break;      /*       tabulation */    case GDK_Tab:      /* 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 ) % 18;      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 ) % 18;      /*       si on se retrouve sur la date et que etat.entree = 0, on enregistre l'oprations */      if ( origine == 1 && !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 == 3 )	{	  /* si le dbit est gris et le crdit est noir, on met sur le crdit */	  if ( gtk_widget_get_style ( widget_formulaire_operations[origine] ) == style_entree_formulaire[1]	       &&	       gtk_widget_get_style ( widget_formulaire_operations[origine+1] ) == style_entree_formulaire[0] )	    origine++;	}      /*       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 == 4 )	if ( gtk_widget_get_style ( widget_formulaire_operations[origine-1] ) == style_entree_formulaire[0] )	  {	    origine++;	    gtk_widget_set_style (widget_formulaire_operations[4],				  style_entree_formulaire[1] );	    gtk_entry_set_text ( GTK_ENTRY (widget_formulaire_operations[4]),				 _("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;      /* entree */    case GDK_KP_Enter :    case GDK_Return :      gtk_signal_emit_stop_by_name ( GTK_OBJECT (widget),				     "key-press-event");      p_tab_nom_de_compte_variable = p_tab_nom_de_compte_courant;      gtk_widget_grab_focus ( CLIST_OPERATIONS );      fin_edition();      break;      /* touches + */    case 65451:    case 61:      /*       si on est dans une entree de date, on augmente d'un jour la date */      /* GDC : prise en compte de la date relle (18) FinGDC */      if ( origine == 1 || origine == 7)	{	  gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),					 "key-press-event");	  incremente_decremente_date ( widget_formulaire_operations[origine],				       1 );	}      break;      /* touches - */    case 65453:    case 45:      /*       si on est dans une entree de date, on diminue d'un jour la date */      /* GDC : prise en compte de la date relle (18) FinGDC */      if ( origine == 1 || origine == 7)	{	  gtk_signal_emit_stop_by_name ( GTK_OBJECT ( widget ),					 "key-press-event");	  incremente_decremente_date ( widget_formulaire_operations[origine],				       -1 );	}      break;    default:      printf("Should not happen (%d) !\n", origine);/*       gtk_signal_handler_block_by_func(widget,touches_champ_formulaire,no_origine); *//*       gtk_signal_emit(widget,""); */      return FALSE;    }  return TRUE;}