- if ( !wxThread::IsMain() )
- {
- // can't call gtk_main_iteration() from other threads like this
- return TRUE;
- }
-#endif // wxUSE_THREADS
-
- wxIsInsideYield = TRUE;
-
- if (!g_isIdle)
- {
- // We need to remove idle callbacks or the loop will
- // never finish.
- gtk_idle_remove( m_idleTag );
- m_idleTag = 0;
- g_isIdle = TRUE;
- }
-
- // disable log flushing from here because a call to wxYield() shouldn't
- // normally result in message boxes popping up &c
- wxLog::Suspend();
-
- while (gtk_events_pending())
- gtk_main_iteration();
-
- // It's necessary to call ProcessIdle() to update the frames sizes which
- // might have been changed (it also will update other things set from
- // OnUpdateUI() which is a nice (and desired) side effect). But we
- // call ProcessIdle() only once since this is not meant for longish
- // background jobs (controlled by wxIdleEvent::RequestMore() and the
- // return value of Processidle().
- ProcessIdle();
-
- // let the logs be flashed again
- wxLog::Resume();
-
- wxIsInsideYield = FALSE;