[Gtk-sharp-list] removing childrens of a node in treeview
Rampage
atomikramp at email.it
Thu Aug 19 21:33:19 EDT 2010
Christopher David Howie ha scritto:
> On 08/19/2010 01:34 PM, Rampage wrote:
>
>> i've adapted your snipplet to work in the testcollapse, and it works
>> great, it removes all child nodes.
>> the problem is that once all children are deleted i can't add anything
>> anymore, couse it looks like the iter goes lost, and without the dummy
>> value i can't test expansion anymore to trigger the population event.
>>
>
> My understanding (someone correct me if I'm wrong) is that the only iter
> that is guaranteed to be valid is the one you're working on when you
> mutate the tree. Therefore the original node's iter will be invalid
> after the first call to Remove().
>
> To work around this, consider inserting your dummy node into the list of
> child notes, right at the front. Then call IterNext on that iter to get
> the first child to remove, then proceed as normal. So, do something
> like this instead:
>
> TreeIter node = GetIterBeingCollapsed();
> int depth = model.IterDepth(node);
>
> TreeIter dummy = model.InsertNode(node, 0);
> // set values on dummy...
>
> if (model.IterNext(ref dummy)) {
> while (model.IterDepth(dummy) > depth &&
> model.Remove(ref dummy));
> }
>
>
Wow, wonderfull, it really works like a charm, i still don't understand
what out and ref means, i'm really n00b in c# so it was a bit tricky,
but now everything seems to work perfectly
Thank you very much for the help.
PS: there are so many things i would like to ask you about gtk# i didn't
find documentation about.. but i don't want to bug you too much :)
More information about the Gtk-sharp-list
mailing list