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:
@@ -431,6 +431,9 @@ void wxAppBase::DeletePendingObjects()
|
|||||||
// Returns true if more time is needed.
|
// Returns true if more time is needed.
|
||||||
bool wxAppBase::ProcessIdle()
|
bool wxAppBase::ProcessIdle()
|
||||||
{
|
{
|
||||||
|
// process pending wx events before sending idle events
|
||||||
|
ProcessPendingEvents();
|
||||||
|
|
||||||
wxIdleEvent event;
|
wxIdleEvent event;
|
||||||
bool needMore = false;
|
bool needMore = false;
|
||||||
wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst();
|
wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst();
|
||||||
@@ -447,6 +450,14 @@ bool wxAppBase::ProcessIdle()
|
|||||||
if (event.MoreRequested())
|
if (event.MoreRequested())
|
||||||
needMore = true;
|
needMore = true;
|
||||||
|
|
||||||
|
// 'Garbage' collection of windows deleted with Close().
|
||||||
|
DeletePendingObjects();
|
||||||
|
|
||||||
|
#if wxUSE_LOG
|
||||||
|
// flush the logged messages if any
|
||||||
|
wxLog::FlushActive();
|
||||||
|
#endif
|
||||||
|
|
||||||
wxUpdateUIEvent::ResetUpdateTime();
|
wxUpdateUIEvent::ResetUpdateTime();
|
||||||
|
|
||||||
return needMore;
|
return needMore;
|
||||||
@@ -482,23 +493,6 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
|
|||||||
|
|
||||||
void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(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
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user