if (has_idle)
{
- /* re-add idle handler */
- wxTheApp->m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
+ /* re-add idle handler (very low priority) */
+ wxTheApp->m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL );
}
+ // disable log flushing from here because a call to wxYield() shouldn't
+ // normally result in message boxes popping up &c
+ wxLog::Suspend();
+
/* 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) */
- while (wxTheApp->ProcessIdle()) { }
+ while (wxTheApp->ProcessIdle())
+ ;
+
+ // let the logs be flashed again
+ wxLog::Resume();
return TRUE;
}
indicating that the idle is over. It may also
get called from other thread for sending events
to the main thread (and processing these in
- idle time). */
+ idle time). Very low priority. */
- wxTheApp->m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
+ wxTheApp->m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL );
g_isIdle = FALSE;
}
/* flush the logged messages if any */
#if wxUSE_LOG
- wxLog *log = wxLog::GetActiveTarget();
- if (log != NULL && log->HasPendingMessages())
- log->Flush();
+ wxLog::FlushActive();
#endif // wxUSE_LOG
}
(gtk_minor_version == 2) &&
(gtk_micro_version < 4))
{
- printf( "wxWindows warning: Disabled GUI threading due to outdated GTK version\n" );
+ printf( "wxWindows warning: GUI threading disabled due to outdated GTK version\n" );
}
else
{