Re: Remove Multiple Rows from Gtk2::ListStore

That likely happens because by removing rows you made one of the later paths 
refer to non-existant rows so that $model->get_iter($path) returns undef.  One 
quick hack that might make this work is to iterate over the @paths in reverse 
order.  But to be safe you should follow the doc's advice[1] of converting the 
paths to Gtk2::TreeRowReferences (which listen to changes in the model and adapt 

Thank you for pointing me towards this.  I am using the following code:

        my $model = $tv_sources->get_model;
        my $selection = $tv_sources->get_selection;
        my @paths = $selection->get_selected_rows;
        # Convert paths to row references
        my @rowrefs;
        foreach my $p (@paths)
            my $treerowreference = Gtk2::TreeRowReference->new ($model, $p);
            push (@rowrefs, $treerowreference);
        # Remove rows based on row references
        for (my $i = 0; $i < scalar(@paths); $i++)
            my $treerowreference = Gtk2::TreeRowReference->new ($model, $paths[$i]);
            my $path = $rowrefs[$i]->get_path;
            my ($iter) = $model->get_iter($path);

Not sure if it is the "right" way to do it but it works for me.

Was just wondering whether I need to do something like:


after the removals are finished  Or is this unnecessary because row references are being used?

Thanks again for all the help.

See what's on at the movies in your area. Find out now:

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