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:
parent
005a8a4c77
commit
44f4f7dda0
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user