// 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();
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();
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
// ----------------------------------------------------------------------------