void CtrlTree::handleEvent( EvtGeneric &rEvent )
{
+ VarTree::Iterator toShow; bool needShow = false;
if( rEvent.getAsString().find( "key:down" ) != string::npos )
{
int key = ((EvtKey&)rEvent).getKey();
if( nextWasSelected )
{
m_pLastSelected = &*it;
+ needShow = true; toShow = it;
}
}
- ensureVisible( it );
}
else if( key == KEY_DOWN )
{
if( previousWasSelected )
{
m_pLastSelected = &*it;
+ needShow = true; toShow = it;
previousWasSelected = false;
}
else
{
previousWasSelected = ( &*it == m_pLastSelected );
}
- ensureVisible( it );
}
else if( key == KEY_RIGHT )
{
}
}
}
+ if( needShow )
+ ensureVisible( toShow );
// Redraw the control
makeImage();
for( it = m_rTree.begin(); it != m_rTree.end();
it = m_rTree.getNextVisibleItem( it ) )
{
- if( it == item ) break;
+ if( it->m_id == item->m_id ) break;
focusItemIndex++;
}
return ensureVisible( focusItemIndex );