Hi,

I am having trouble with opening a specific path in tree presentation (using MorphTreeMorph) when filtering nodes. 

What I am trying to achieve is that if a node is searched in a tree at level 4, all the parent nodes are opened to show the node searched (hence the user the does not need to open the nodes manually).

In Glamour, when combined with filtering, expanding up to the root of the search node works when the parent node is already expanded, otherwise the nodes are not expanded. At the end of the mail, there are two snippets to reproduce the behavior.

MorphTreeMorph>>addMorphsTo: from: withExpandedItems: atLevel: is the method responsible for this behavior in Glamour and it seems that nodes are only expanded (to show their children) if they were expanded beforehand. Is there a way to do otherwise in MorphTreeMorph (open paths with non-expanded nodes)?

tx.

Usman

Code snippets in Glamour (Pharo 4.0):

| tabulator |
tabulator := GLMTabulator new column: [ :c | c row: #one ]; yourself.
tabulator transmit to: #one; andShow: [:a |
a tree
title: 'Show filter paths';
rootsExpanded;
children: [:item :x : level |
 (item < 5 and: [ level < 6 ])
ifTrue: [ {item + 1}]
ifFalse:[#() ]];
filterOn: [:text :each | text = each asString]].
tabulator openOn: (1 to: 1) "searching for 3 does not open the path to 3 ?!?!?!"

| tabulator | tabulator := GLMTabulator new column: [ :c | c row: #one ]; yourself. tabulator transmit to: #one; andShow: [:a | a tree title: 'Show filter paths'; rootsExpanded; children: [:item :x : level | (item < 3 and: [ level < 5 ]) "to stop adding infinite children" ifTrue: [ level = 4 "plug a node 5 deep down and see if we can find the path" ifTrue: [(1 to: 5)] ifFalse: [ (1 to: item * 2) ] ] ifFalse:[#() ]]; filterOn: [:text :each | text = each asString]]. tabulator openOn: (1 to: 2) "searching for 5 correctly opens the path up to 5"