[Pharo-project] A lil simplification of MorphTreeNodeMorph

Igor Stasenko siguctua at gmail.com
Wed Apr 6 10:02:42 CEST 2011


On 6 April 2011 09:45, Alain Plantec <alain.plantec at yahoo.com> wrote:
> Le 06/04/2011 08:57, Igor Stasenko a écrit :
>>
>>> another point, try all examples in Morphic-MorphTreeWidget-Examples.
>>> now, the height of each row is constant.
>>
>> Yes, so what it should be instead?
>
> it should be dependent on the content height, so as it was before.
> another problem is the spacers removal.
> now, the horizontal positioning is broken (they was here to take into
> account the vertical resizers width)
> see the screen shots.
>

yes, positioning is not quite correct. But the idea is to use layouts
instead of morphs to
adjust positioning.
Because having 3 extra morphs per list item which sitting there only
for markup is not fun.
And it affects a rendering speed considerably.

> try SimpleGridExample new open before and after the changes.
> to exhibit the problem, change the resizerWidth from 2 to 12 as an example
> (just set it to 12 in SimpleGridExample>>treeMorph)
>
> I think that MorphTreeMorph can't be efficient for very big lists
> because each row may contain a lot of morphs.

Yes, but you can use morphs only for those items which are shown on
screen, while for those which outside
you don't need to use morphs at all.

The idea is that You could keep in memory all morphs which
representing the tree, but don't iterate over them
every time. Just add to submorphs only those which currently visible.

> This is why I've also implemented LazyMorphTreeMorph.
> Try it, it is very much efficient but badly implemented.
> I think it should use a background process to build the list
> (something like what you did for the annotation pane).
>
What could be done is to simplify things even more, so creating a list
item will be cheaper and skip many initialization,
unless it is necessary.

> Cheers
> Alain


-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Pharo-project mailing list