+ it = m_firstPos;
+ int i = (int)(maxItems()*1.5);
+ while( i >= 0 )
+ {
+ VarTree::Iterator it_old = it;
+ it = m_flat ? m_rTree.getNextLeaf( it )
+ : m_rTree.getNextVisibleItem( it );
+ /* End is already visible, dont' scroll */
+ if( it == m_rTree.end() )
+ {
+ it = it_old;
+ break;
+ }
+ needShow = true;
+ i--;
+ }
+ if( needShow )
+ {
+ ensureVisible( it );
+ makeImage();
+ notifyLayout();
+ return;
+ }
+ }
+ else if (key == KEY_PAGEUP )
+ {
+ it = m_firstPos;
+ int i = maxItems();
+ while( i >= maxItems()/2 )
+ {
+ it = m_flat ? m_rTree.getPrevLeaf( it )
+ : m_rTree.getPrevVisibleItem( it );
+ /* End is already visible, dont' scroll */
+ if( it == ( m_flat ? m_rTree.firstLeaf() : m_rTree.begin() ) )
+ {
+ break;
+ }
+ i--;
+ }
+ ensureVisible( it );
+ makeImage();
+ notifyLayout();
+ return;
+ }
+
+
+ for( it = m_flat ? m_rTree.firstLeaf() : m_rTree.begin();
+ it != m_rTree.end();
+ it = m_flat ? m_rTree.getNextLeaf( it )
+ : m_rTree.getNextVisibleItem( it ) )
+ {
+ VarTree::Iterator next = m_flat ? m_rTree.getNextLeaf( it )
+ : m_rTree.getNextVisibleItem( it );