rem: combofix -> liste_completion = g_slist_sort ( combofix -> liste_completion, (GCompareFunc) classe_alphabetique );  if ( classement_auto ) gtk_combofix_sort ( GTK_COMBOFIX ( combofix ));
context: void gtk_combofix_set_list ( GtkComboFix *combofix,			     GSList *liste,			     gint complex,			     gint classement_auto ){  GSList *pointeur;  gchar *derniere_categ;  GSList *nouvelle_liste;  g_return_if_fail ( combofix );  g_return_if_fail (GTK_IS_COMBOFIX (combofix));  g_slist_free ( combofix -> liste );  g_slist_free ( combofix -> liste_completion );  /* recopie la liste originale */  nouvelle_liste = NULL;  pointeur = liste;  if ( complex )    while ( pointeur )      {	GSList *sous_pointeur;	GSList *sous_liste;	sous_pointeur = pointeur -> data;	sous_liste = NULL;	while ( sous_pointeur )	  {	    sous_liste = g_slist_append ( sous_liste,					  g_strdup ( sous_pointeur -> data ) );	    sous_pointeur = sous_pointeur -> next;	  }	nouvelle_liste = g_slist_append (nouvelle_liste,					 sous_liste );	pointeur = pointeur -> next;      }  else    while ( pointeur )      {	nouvelle_liste = g_slist_append ( nouvelle_liste,					  g_strdup ( pointeur -> data ) );	pointeur = pointeur -> next;      }  /* remplit les champs de la combofix */  combofix -> liste = nouvelle_liste;  combofix -> complex = complex;  combofix -> auto_sort = classement_auto;  /* cration de la liste des compltions : systme de catgories - sous catgories */  /* toutes catgorie est mise dans la liste */  /*   les sous-catg sont mises sous la forme catg : sous-catg */  /* on trie  la fin la liste par ordre alphabtique pour que lors d'une compltion, c'est le 1er qui sorte */  /* protge de l'erreur si on met une sous categ en 1er */  derniere_categ = "";  combofix -> liste_completion = NULL;  pointeur = liste;  if ( complex )    while ( pointeur )      {	gchar *string;	GSList *sous_pointeur;	sous_pointeur = pointeur -> data;	while ( sous_pointeur )	  {	    string = sous_pointeur -> data;	    if ( string[0] == '\t' )	      string = g_strconcat ( derniere_categ,				     " : ",				     string + 1,				     NULL );	    else	      derniere_categ = string;	    combofix -> liste_completion = g_slist_append ( combofix -> liste_completion,							    string );	    sous_pointeur = sous_pointeur -> next;	  }	pointeur = pointeur -> next;      }  else    while ( pointeur )      {	gchar *string;	string = pointeur -> data;	if ( string[0] == '\t' )	  string = g_strconcat ( derniere_categ,				 " : ",				 string + 1,				 NULL );	else	  derniere_categ = string;	combofix -> liste_completion = g_slist_append ( combofix -> liste_completion,							string );	pointeur = pointeur -> next;      }  /*   classe la liste de completion */  combofix -> liste_completion = g_slist_sort ( combofix -> liste_completion,						(GCompareFunc) classe_alphabetique );  if ( classement_auto )    gtk_combofix_sort ( GTK_COMBOFIX ( combofix ));}