Don't send idle events to the windows about to be destroyed.

This is useless and can apparently result in some problems as of r25877 and
r25877 (from 8 years ago) added explicit checks preventing processing such
events in wxToolBar and wxMenu. Instead, simply don't generate these events in
the first place and also remove the now unnecessary checks for them.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-12-29 22:05:31 +00:00
parent a2fb9138b2
commit 9df70d797b
3 changed files with 4 additions and 15 deletions

View File

@@ -349,7 +349,10 @@ bool wxAppBase::ProcessIdle()
while (node)
{
wxWindow* win = node->GetData();
if (win->SendIdleEvents(event))
// Don't send idle events to the windows that are about to be destroyed
// anyhow, this is wasteful and unexpected.
if ( !wxPendingDelete.Member(win) && win->SendIdleEvents(event) )
needMore = true;
node = node->GetNext();
}

View File

@@ -598,14 +598,6 @@ wxMenuItem* wxMenuBase::FindItemByPosition(size_t position) const
void wxMenuBase::UpdateUI(wxEvtHandler* source)
{
wxWindow * const win = GetWindow();
if ( win )
{
// Don't update menus if the parent
// frame is about to get deleted
wxWindow *tlw = wxGetTopLevelParent(win);
if (tlw && wxPendingDelete.Member(tlw))
return;
}
if ( !source && win )
source = win->GetEventHandler();

View File

@@ -701,12 +701,6 @@ void wxToolBarBase::UpdateWindowUI(long flags)
if ( !IsShown() )
return;
// There is no sense in updating the toolbar UI
// if the parent window is about to get destroyed
wxWindow *tlw = wxGetTopLevelParent( this );
if (tlw && wxPendingDelete.Member( tlw ))
return;
wxEvtHandler* evtHandler = GetEventHandler() ;
for ( wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();