rem: gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW(treeview), treepath, NULL,
add: gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW(payment_method_treeview), treepath, NULL,
context: void ajouter_type_operation ( void ){    struct struct_type_ope *type_ope;    GtkTreeSelection * selection;    GtkTreeIter iter, parent, root, child, *final;    GtkTreePath * treepath;    gint no_compte, type_final;    gboolean good, visible;    GValue value_name = {0, };    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));    good = gtk_tree_selection_get_selected (selection, NULL, &iter);    if ( good )    {	gtk_tree_model_get ( GTK_TREE_MODEL(model), &iter, 			     PAYMENT_METHODS_VISIBLE_COLUMN, &visible,			     PAYMENT_METHODS_POINTER_COLUMN, &type_ope,			     -1 );	if ( visible ) /* This is a payment method */	{	    /* Select parent */	    gtk_tree_model_iter_parent ( GTK_TREE_MODEL(model),					 &parent, &iter );	    final = &parent;	    type_final = type_ope -> signe_type;	    gtk_tree_model_iter_parent (GTK_TREE_MODEL(model), &root, &parent);	}	else	{	    gtk_tree_model_get_value ( GTK_TREE_MODEL(model), &iter, 				       PAYMENT_METHODS_NAME_COLUMN, &value_name);	    if (gtk_tree_model_iter_parent (GTK_TREE_MODEL(model), &root, &iter))	    {		gchar * a_name = (gchar*) g_value_get_string(&value_name);		/* We are on "Credit" or "Debit" or "Neutral" */		final = &iter;		if ( !strcmp(a_name, _("Credit")) )		{		    type_final = 2;		}		else if ( !strcmp(a_name, _("Debit")) )		{		    type_final = 1;		}		else 		/* Neutral */		{		    type_final = 0;		}	      	    }	    else	    {		/* We are on an account, type will be the same as the		   first node  */		if (! gtk_tree_model_iter_children( GTK_TREE_MODEL(model),						    &child, &iter ))		    /* Should not happen! */		    dialogue_error_brain_damage ();		final = &child;		type_final = 1;	/* Debit */		gtk_tree_model_get ( GTK_TREE_MODEL(model), final, 				     PAYMENT_METHODS_TYPE_COLUMN, &no_compte,				     -1);	    }	}    }    else    {	/* No selection, we use first account, first method*/	gtk_tree_model_get_iter_first (GTK_TREE_MODEL(model), &iter);	gtk_tree_model_iter_children( GTK_TREE_MODEL(model),				      &child, &iter );	final = &child;	type_final = 1;		/* Debit */    }    /* This is a hack: account number is put in Debit/Credit nodes */    gtk_tree_model_get ( GTK_TREE_MODEL(model), final, 			 PAYMENT_METHODS_TYPE_COLUMN, &no_compte,			 -1);    type_ope = g_malloc ( sizeof ( struct struct_type_ope ));    if ( gsb_data_account_get_method_payment_list (no_compte) )	type_ope -> no_type = ((struct struct_type_ope *)			       (g_slist_last ( gsb_data_account_get_method_payment_list (no_compte) )->data))->no_type + 1;    else	type_ope -> no_type = 1;    type_ope -> nom_type = g_strdup ( _("New payment method") );    type_ope -> signe_type = type_final;    type_ope -> affiche_entree = 0;    type_ope -> numerotation_auto = 0;    type_ope -> no_en_cours = 0;    type_ope -> no_compte = no_compte;    gtk_tree_store_append (model, &iter, final);    gtk_tree_store_set (model, &iter,			PAYMENT_METHODS_NAME_COLUMN, type_ope -> nom_type,			PAYMENT_METHODS_NUMBERING_COLUMN, "",			PAYMENT_METHODS_TYPE_COLUMN, type_final,			PAYMENT_METHODS_DEFAULT_COLUMN, FALSE,			PAYMENT_METHODS_ACTIVABLE_COLUMN, type_final != 0, 			PAYMENT_METHODS_VISIBLE_COLUMN, TRUE, 			PAYMENT_METHODS_POINTER_COLUMN, type_ope, 			-1 );    /* Select and view new position */    gtk_tree_selection_select_iter ( selection, &iter );    treepath = gtk_tree_model_get_path ( GTK_TREE_MODEL(model), &iter );    gtk_tree_view_scroll_to_cell ( GTK_TREE_VIEW(treeview), treepath, NULL, 				   TRUE, 0.5, 0);    gtk_tree_path_free ( treepath );    /* Add to payment methods */    gsb_data_account_set_method_payment_list ( no_compte,					  g_slist_append ( gsb_data_account_get_method_payment_list (no_compte), type_ope ) );    /* Mark file as modified */    modification_fichier ( TRUE );    /* FIXME: implement that */    /*       /\* on ajoute ce type à la liste des tris *\/ */    /*       liste_tri_tmp[no_compte] = g_slist_append ( liste_tri_tmp[no_compte],	/\* FIXME *\/ */    /* 						  GINT_TO_POINTER ( type_ope -> no_type )); */    /*       /\*   si les neutres doivent être intégrés dans les débits crédits, on ajoute son opposé *\/ */    /*       if ( neutres_inclus_tmp[no_compte] ) */    /* 	liste_tri_tmp[no_compte] = g_slist_append ( liste_tri_tmp[no_compte], */    /* 						    GINT_TO_POINTER ( -type_ope -> no_type )); */    /*       remplit_liste_tri_par_type ( no_compte ); */}