Don't send a huge number of unneeded wxChildFocusEvents.

wxControlContainer::SetLastFocus() propagated wxChildFocusEvent explicitly to
its parent but this is not needed because wxChildFocusEvents propagate by
default, being derived from wxCommandEvent. And doing it again resulted in the
total number of events increasing exponentially with the depth of the window
hierarchy and real performance problems due to processing all of them.

Closes #14310.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-05-25 09:48:22 +00:00
parent 005a8a4c77
commit 44f4f7dda0

View File

@ -174,19 +174,6 @@ void wxControlContainer::SetLastFocus(wxWindow *win)
wxLogTrace(TRACE_FOCUS, wxT("No more last focus")); wxLogTrace(TRACE_FOCUS, wxT("No more last focus"));
} }
} }
// propagate the last focus upwards so that our parent can set focus back
// to us if it loses it now and regains later; do *not* do this if we are
// a toplevel window (e.g. wxDialog) that has another frame as its parent
if ( !m_winParent->IsTopLevel() )
{
wxWindow *parent = m_winParent->GetParent();
if ( parent )
{
wxChildFocusEvent eventFocus(m_winParent);
parent->GetEventHandler()->ProcessEvent(eventFocus);
}
}
} }
// -------------------------------------------------------------------- // --------------------------------------------------------------------