Re: Errors removing rows from treestore
- From: Matt Bragano <maestro485 comcast net>
- To: gtkmm-list gnome org
- Subject: Re: Errors removing rows from treestore
- Date: Mon, 12 Jun 2006 11:42:07 -0400
Ah, I wasn't thinking about the convert_iter_to_child_iter(). That did
the trick. And you're right, a for loop would be best applied here.
Thanks for the help,
Matt Bragano
Bob Caryl wrote:
The following are guesses made after reading the docs on TreeModelFilter:
First off, you probably will want to convert the iterator passed to
your callback slot to an iterator in the child TreeModel you used to
create your TreeModelFilter using:
Gtk::TreeModelFilter::convert_iter_to_child_iter()
since, most probably, the iter being passed to your callback is from
the TreeModelFilter instead of the actual TreeModel you originally
populated.
Next, you make the assumption that the iterator "child" is valid.
Instead of the while loop you are employing, try this instead:
for(child = nodeChildren.begin(); child ; child =
refTreeModel->erase(*child));
At least this way, you won't get any invalid child object errors.
Bob
Matt Bragano wrote:
After much help, I've successfully implemented a TreeModel with a
TreeModelFilter. However, I've noticed that if I expand a node,
collapse it and expand it again, the contents are "doubled". That
is, if the expanded row contained items A and B, on the second
expansion the items in the row are now A B A B.
I tried using a model column flag to determine if the tree had been
expanded once prior, but with no luck. Now I'm trying to simply
remove the child rows in the on_row_collapsed() method like this:
void on_row_collapsed(const Gtk::TreeModel::iterator& iter,
const Gtk::TreeModel::Path &path) {
Gtk::TreeModel::Row row = *iter;
const Gtk::TreeNodeChildren &nodeChildren = row.children();
Gtk::TreeModel::Children::iterator child = nodeChildren.begin();
while(child != nodeChildren.end()) {
child = refTreeModel->erase(*child); // this causes errors
}
}
The problem is that every time the while loop is executed I recieve
this error:
Gtk-CRITICAL **: gtk_tree_store_remove: assertion `VALID_ITER (iter,
tree_store)' failed
Any ideas as to what is the problem here? Or is there a better way
to work around the doubled-up rows I'm running into?
Thanks,
Matt Bragano
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]