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:
@@ -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();
|
||||
}
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user