X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..414dfb5804fc568b26fec3f8a8ecc2f25addedfd:/src/gtk/evtloop.cpp diff --git a/src/gtk/evtloop.cpp b/src/gtk/evtloop.cpp index 9ff74e58c3..74d4132b43 100644 --- a/src/gtk/evtloop.cpp +++ b/src/gtk/evtloop.cpp @@ -31,6 +31,7 @@ #ifndef WX_PRECOMP #endif //WX_PRECOMP +#include "wx/app.h" #include "wx/evtloop.h" #include @@ -62,18 +63,13 @@ private: // wxEventLoop running and exiting // ---------------------------------------------------------------------------- -wxEventLoop *wxEventLoop::ms_activeLoop = NULL; +wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL; wxEventLoop::~wxEventLoop() { wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") ); } -bool wxEventLoop::IsRunning() const -{ - return m_impl != NULL; -} - int wxEventLoop::Run() { // event loops are not recursive, you need to create another loop! @@ -108,9 +104,20 @@ void wxEventLoop::Exit(int rc) // wxEventLoop message processing dispatching // ---------------------------------------------------------------------------- +extern bool g_isIdle; + bool wxEventLoop::Pending() const { - return gtk_events_pending() > 0; + if (wxTheApp && !g_isIdle) + { + // We need to remove idle callbacks or gtk_events_pending will + // never return false. + gtk_idle_remove( wxTheApp->m_idleTag ); + wxTheApp->m_idleTag = 0; + g_isIdle = TRUE; + } + + return gtk_events_pending(); } bool wxEventLoop::Dispatch()