X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b46b1d59d6f69ad80dcf5955375578a6504d100a..69659fd770f615210efac4b4fa741b3ad6223616:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index f426219329..8a33c3f31f 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -138,15 +138,14 @@ void wxAppBase::CleanUp() delete wxTheColourDatabase; wxTheColourDatabase = NULL; - delete wxPendingEvents; - wxPendingEvents = NULL; - #if wxUSE_THREADS #if wxUSE_VALIDATORS // If we don't do the following, we get an apparent memory leak. ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker(); #endif // wxUSE_VALIDATORS #endif // wxUSE_THREADS + + wxAppConsole::CleanUp(); } // ---------------------------------------------------------------------------- @@ -366,6 +365,9 @@ void wxAppBase::DeletePendingObjects() // Returns true if more time is needed. bool wxAppBase::ProcessIdle() { + // process pending wx events before sending idle events + ProcessPendingEvents(); + wxIdleEvent event; bool needMore = false; wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); @@ -377,7 +379,16 @@ bool wxAppBase::ProcessIdle() node = node->GetNext(); } - needMore = wxAppConsole::ProcessIdle(); + if (wxAppConsole::ProcessIdle()) + needMore = true; + + // 'Garbage' collection of windows deleted with Close(). + DeletePendingObjects(); + +#if wxUSE_LOG + // flush the logged messages if any + wxLog::FlushActive(); +#endif wxUpdateUIEvent::ResetUpdateTime(); @@ -414,27 +425,6 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event) return needMore; } -void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event)) -{ - // If there are pending events, we must process them: pending events - // are either events to the threads other than main or events posted - // with wxPostEvent() functions - // GRG: I have moved this here so that all pending events are processed - // before starting to delete any objects. This behaves better (in - // particular, wrt wxPostEvent) and is coherent with wxGTK's current - // behaviour. Changed Feb/2000 before 2.1.14 - ProcessPendingEvents(); - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - -#if wxUSE_LOG - // flush the logged messages if any - wxLog::FlushActive(); -#endif // wxUSE_LOG - -} - // ---------------------------------------------------------------------------- // wxGUIAppTraitsBase // ----------------------------------------------------------------------------