// Send idle event to window and all subwindows bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event) { bool needMore = false; win->OnInternalIdle(); if (wxIdleEvent::CanSend(win)) { event.SetEventObject(win); win->GetEventHandler()->ProcessEvent(event); if (event.MoreRequested()) needMore = true; } wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst(); while ( node ) { wxWindow *child = node->GetData(); if (SendIdleEvents(child, event)) needMore = true; node = node->GetNext(); } return needMore; }
// 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(); while (node) { wxWindow* win = node->GetData(); if (SendIdleEvents(win, event)) needMore = true; node = node->GetNext(); } event.SetEventObject(this); (void) ProcessEvent(event); 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; }
// Returns true if more time is needed. bool wxAppBase::ProcessIdle() { // call the base class version first, it will process the pending events // (which should be done before the idle events generation) and send the // idle event to wxTheApp itself bool needMore = wxAppConsoleBase::ProcessIdle(); wxIdleEvent event; wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); while (node) { wxWindow* win = node->GetData(); if (SendIdleEvents(win, event)) needMore = true; node = node->GetNext(); } // 'Garbage' collection of windows deleted with Close(). DeletePendingObjects(); #if wxUSE_LOG // flush the logged messages if any wxLog::FlushActive(); #endif wxUpdateUIEvent::ResetUpdateTime(); return needMore; }
// Send idle event to window and all subwindows bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event) { bool needMore = false; win->OnInternalIdle(); // should we send idle event to this window? if ( wxIdleEvent::GetMode() == wxIDLE_PROCESS_ALL || win->HasExtraStyle(wxWS_EX_PROCESS_IDLE) ) { event.SetEventObject(win); win->HandleWindowEvent(event); if (event.MoreRequested()) needMore = true; } wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst(); while ( node ) { wxWindow *child = node->GetData(); if (SendIdleEvents(child, event)) needMore = true; node = node->GetNext(); } return needMore; }
// Returns true if more time is needed. bool wxAppBase::ProcessIdle() { wxIdleEvent event; bool needMore = false; wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); while (node) { wxWindow* win = node->GetData(); if (SendIdleEvents(win, event)) needMore = true; node = node->GetNext(); } event.SetEventObject(this); (void) ProcessEvent(event); if (event.MoreRequested()) needMore = true; wxUpdateUIEvent::ResetUpdateTime(); return needMore; }