Problem deleting multiple rows from a Tree


I'm having a little problem deleting selected rows form a GtkTreeView.

I have a list (tree). Connected with the signal "key-press-event" is the function remove_items:

int remove_items(GtkWidget *widget, GdkEventKey *event)
        GtkTreeSelection *sel;
        GList *list;

        if (event->keyval==GDK_Delete) {
                sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));

                list = gtk_tree_selection_get_selected_rows(sel, NULL);

                g_list_foreach(list, (GFunc)apaga_item, NULL);

                g_list_foreach(list, (GFunc)gtk_tree_path_free, NULL);
                g_list_free (list);
        return 0;

And there's also a function apaga_item, that is called:

void apaga_item(GtkTreePath *path)
        GtkTreeIter iter;

        if (gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
                gtk_list_store_remove(store, &iter);


So, this is my problem: when there are many rows selected, it doesn't remove all of them, or even worse: delete rows there were not selected. What is the right way to remove all the selected rows?

Daniel K. O.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]