Hi Peter,

Did not check the code but when creating your custom tree view, if you have cycles, can you use the following:

aComposite tree
shouldValidate: false;
allowsRecursiveSearch: false;

This is actually a side-effect of another issue from glamour (bidirectional ports in inspector) that we'll need to look at for Pharo 7.

Also you can try to use #fastTree instead of #tree. Ideally we'd like to deprecate #tree for Pharo 7 but at the moment the fast table renderer is still missing features.

Can post some screenshots with the visual glitches of arrows?

Cheers,
Andrei

On Fri, Apr 14, 2017 at 4:09 PM, Peter Uhnak <i.uhnak@gmail.com> wrote:
Sorry, forgot to send the attachment.

Peter


On Fri, Apr 14, 2017 at 03:06:55PM +0200, Peter Uhnak wrote:
> Hi,
>
> I have a small GTInspector extension that shows me a tree-like structure of a graph. As the data underneath are graphs, the tree itself is infinite (because there are loops).
>
> That by itself works fine (because only roots are expanded), however when I am filtering the elements (in raw pane), GTInspector gets stuck in infinite GLMTreeMorphNodeModel>>pathIn: loop.
>
> I've made couple of classes to reproduce the behavior - see attached file.
>
> There are two types of nodes: one contains children (items), and the other can contain references to other elements.
> The extension is written in LLCompositeElement>>gtInspectorTreeIn:
>
>
> To reproduce:
>
> 1. import attached package
> 2. execute the following
> ```
> '<a>
>       <b ref c />
>       <c ref b />
> </a>'.
>
> a := LLCompositeElement named: 'a'.
> b := LLReferenceElement named: 'b'.
> c := LLReferenceElement named: 'c'.
>
> a items: { b . c }.
> b references: { c }.
> c references: { b }.
>
> a inspect.
> ```
> 3. the Tree view works fine (I see some visual glitching of arrows, but that doesn't matter)
> 4. switch to Raw view
> 5. (any of these will trigger the behaivor)
>       5.a. click on "items" instance variable, or
>       5.b. "do it and go" any expression (e.g. 1+1)
> 6. now you are in infinite pathIn: loop
>
> Sometimes I've experienced that breaking the loop (meta+.), closing the debugger and redoing the expression worked... but I don't have any details about that.
>
> Thanks!
> Peter

_______________________________________________
Moose-dev mailing list
Moose-dev@list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev