// ============================================================================
// implementation
// ============================================================================
// ============================================================================
// implementation
// ============================================================================
// otherwise we can accept focus either if we have no children at all
// (in this case we're probably not used as a container) or only when
// at least one child will accept focus
// otherwise we can accept focus either if we have no children at all
// (in this case we're probably not used as a container) or only when
// at least one child will accept focus
// we should start from the first/last control and not from the one which
// had focus the last time if we're propagating the event downwards because
// we should start from the first/last control and not from the one which
// had focus the last time if we're propagating the event downwards because
// and instead give it to the first/last child depending from which
// direction we're coming
event.SetEventObject(m_winParent);
// and instead give it to the first/last child depending from which
// direction we're coming
event.SetEventObject(m_winParent);
if ( !child->GetEventHandler()->ProcessEvent(event) )
{
// set it first in case SetFocusFromKbd() results in focus
if ( !child->GetEventHandler()->ProcessEvent(event) )
{
// set it first in case SetFocusFromKbd() results in focus