process pending wx events before sending idle events

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@47229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2007-07-08 05:31:32 +00:00
parent 5719de8643
commit 6a467b6cc6

View File

@@ -431,6 +431,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();
@@ -447,6 +450,14 @@ bool wxAppBase::ProcessIdle()
if (event.MoreRequested())
needMore = true;
// 'Garbage' collection of windows deleted with Close().
DeletePendingObjects();
#if wxUSE_LOG
// flush the logged messages if any
wxLog::FlushActive();
#endif
wxUpdateUIEvent::ResetUpdateTime();
return needMore;
@@ -482,23 +493,6 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
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
}
// ----------------------------------------------------------------------------