Made wxGTK's wxEventLoop::IsRunning a little more consistent with
wxMSW's and uninstall the idle handled like wxYield does so Pending can eventually return false. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -88,7 +88,7 @@ public:
|
|||||||
virtual void Exit(int rc = 0);
|
virtual void Exit(int rc = 0);
|
||||||
virtual bool Pending() const;
|
virtual bool Pending() const;
|
||||||
virtual bool Dispatch();
|
virtual bool Dispatch();
|
||||||
virtual bool IsRunning() const { return m_impl != NULL; }
|
virtual bool IsRunning() const { return GetActive() == this; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// the pointer to the port specific implementation class
|
// the pointer to the port specific implementation class
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
|
#include "wx/app.h"
|
||||||
#include "wx/evtloop.h"
|
#include "wx/evtloop.h"
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -103,9 +104,20 @@ void wxEventLoop::Exit(int rc)
|
|||||||
// wxEventLoop message processing dispatching
|
// wxEventLoop message processing dispatching
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
extern bool g_isIdle;
|
||||||
|
|
||||||
bool wxEventLoop::Pending() const
|
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()
|
bool wxEventLoop::Dispatch()
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#endif //WX_PRECOMP
|
#endif //WX_PRECOMP
|
||||||
|
|
||||||
|
#include "wx/app.h"
|
||||||
#include "wx/evtloop.h"
|
#include "wx/evtloop.h"
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -103,9 +104,20 @@ void wxEventLoop::Exit(int rc)
|
|||||||
// wxEventLoop message processing dispatching
|
// wxEventLoop message processing dispatching
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
extern bool g_isIdle;
|
||||||
|
|
||||||
bool wxEventLoop::Pending() const
|
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()
|
bool wxEventLoop::Dispatch()
|
||||||
|
Reference in New Issue
Block a user