diff -r eaa079afe64c -r e1987ab3768a uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp --- a/uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp Wed Sep 15 13:12:27 2010 +0300 +++ b/uiacceltk/hitchcock/ServerCore/Src/alfnodes.cpp Wed Oct 13 15:34:15 2010 +0300 @@ -394,60 +394,61 @@ // --------------------------------------------------------------------------- // +// --------------------------------------------------------------------------- +// CAlfNode::TraverseNodeTree +// Traverse through node tree and fill node array +// --------------------------------------------------------------------------- +// + void CAlfNode::TraverseNodeTree( CAlfNode* node, RPointerArray& nodes, TBool aTraverseOnlySiblings, TBool aAddMe) { // Exit if we've already finished walking the tree. if ( node == NULL) { - __ALFLOGSTRING("TraverseNodeTree returning - NULL"); + __ALFLOGSTRING(" returning NULL"); return; } - - while ( node ) + if (!aTraverseOnlySiblings) { - if (!aTraverseOnlySiblings) - { - if ( node->iSpriteChild ) - { - CAlfNode* spritenode = node->iSpriteChild ; - while ( spritenode ) - { - nodes.Append( spritenode ); - spritenode = spritenode->iSibling; - } - } - - if( node->iTextCursor ) - { - nodes.Append(node->iTextCursor ); - } - - if( node->iAnimChild ) + if ( node->iSpriteChild ) + { + CAlfNode* spritenode = node->iSpriteChild ; + while ( spritenode ) { - CAlfNode* animnode = node->iAnimChild ; - while ( animnode ) - { - nodes.Append( animnode ); - animnode = animnode->iSibling; - } - } - - if ( node->iChild) - { - TraverseNodeTree(node->iChild , nodes, EFalse, ETrue); + nodes.Append( spritenode ); + spritenode = spritenode->iSibling; } - } - - if (aAddMe) + } + + if( node->iTextCursor ) { - nodes.Append( node ); + nodes.Append(node->iTextCursor ); + } + + if( node->iAnimChild ) + { + CAlfNode* animnode = node->iAnimChild ; + while ( animnode ) + { + nodes.Append( animnode ); + animnode = animnode->iSibling; + } } + + if ( node->iChild) + { + TraverseNodeTree(node->iChild , nodes, EFalse, ETrue); + } + } - // Without recursion, continue with the following: - // TraverseNodeTree(node->iSibling, nodes, ETrue, ETrue); - node = node->iSibling; - aTraverseOnlySiblings = ETrue; - aAddMe = ETrue; + if (aAddMe) + { + nodes.Append( node ); + } + + if ( node->iSibling ) + { + TraverseNodeTree(node->iSibling, nodes, ETrue, ETrue); } }