switched to wxEventLoopBase/wxEventLoop implementation (instead of m_impl based one) for wxMSW; minimal changes for the other ports
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,35 +18,35 @@
|
||||
|
||||
#include "wx/utils.h"
|
||||
|
||||
class WXDLLEXPORT wxEventLoopImpl;
|
||||
class WXDLLEXPORT wxEventLoop;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxEventLoop: a GUI event loop
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxEventLoop
|
||||
class WXDLLEXPORT wxEventLoopBase
|
||||
{
|
||||
public:
|
||||
// ctor
|
||||
wxEventLoop() { m_impl = NULL; }
|
||||
// trivial, but needed (because of wxEventLoopBase) ctor
|
||||
wxEventLoopBase() { }
|
||||
|
||||
// dtor
|
||||
virtual ~wxEventLoop();
|
||||
virtual ~wxEventLoopBase() { }
|
||||
|
||||
// start the event loop, return the exit code when it is finished
|
||||
virtual int Run();
|
||||
virtual int Run() = 0;
|
||||
|
||||
// exit from the loop with the given exit code
|
||||
virtual void Exit(int rc = 0);
|
||||
virtual void Exit(int rc = 0) = 0;
|
||||
|
||||
// return TRUE if any events are available
|
||||
virtual bool Pending() const;
|
||||
virtual bool Pending() const = 0;
|
||||
|
||||
// dispatch a single event, return FALSE if we should exit from the loop
|
||||
virtual bool Dispatch();
|
||||
virtual bool Dispatch() = 0;
|
||||
|
||||
// is the event loop running now?
|
||||
virtual bool IsRunning() const;
|
||||
virtual bool IsRunning() const = 0;
|
||||
|
||||
// return currently active (running) event loop, may be NULL
|
||||
static wxEventLoop *GetActive() { return ms_activeLoop; }
|
||||
@@ -64,11 +64,39 @@ protected:
|
||||
// the pointer to currently active loop
|
||||
static wxEventLoop *ms_activeLoop;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxEventLoopBase)
|
||||
};
|
||||
|
||||
// we're moving away from old m_impl wxEventLoop model as otherwise the user
|
||||
// code doesn't have access to platform-specific wxEventLoop methods and this
|
||||
// can sometimes be very useful (e.g. under MSW this is necessary for
|
||||
// integration with MFC) but currently this is done for MSW only, other ports
|
||||
// should follow a.s.a.p.
|
||||
#ifdef __WXMSW__
|
||||
#include "wx/msw/evtloop.h"
|
||||
#else
|
||||
|
||||
class WXDLLEXPORT wxEventLoopImpl;
|
||||
|
||||
class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
|
||||
{
|
||||
public:
|
||||
wxEventLoop() { m_impl = NULL; }
|
||||
|
||||
virtual int Run();
|
||||
virtual void Exit(int rc = 0);
|
||||
virtual bool Pending() const;
|
||||
virtual bool Dispatch();
|
||||
virtual bool IsRunning() const { return m_impl != NULL; }
|
||||
|
||||
protected:
|
||||
// the pointer to the port specific implementation class
|
||||
wxEventLoopImpl *m_impl;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxEventLoop)
|
||||
};
|
||||
}
|
||||
|
||||
#endif // __WXMSW__/!__WXMSW__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxModalEventLoop
|
||||
|
50
include/wx/msw/evtloop.h
Normal file
50
include/wx/msw/evtloop.h
Normal file
@@ -0,0 +1,50 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/msw/evtloop.h
|
||||
// Purpose: wxEventLoop class for MSW
|
||||
// Author: Vadim Zeitlin
|
||||
// Modified by:
|
||||
// Created: 2004-07-31
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2003-2004 Vadim Zeitlin <vadim@wxwindows.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_MSW_EVTLOOP_H_
|
||||
#define _WX_MSW_EVTLOOP_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxEventLoop
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
|
||||
{
|
||||
public:
|
||||
wxEventLoop();
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual int Run();
|
||||
virtual void Exit(int rc = 0);
|
||||
virtual bool Pending() const;
|
||||
virtual bool Dispatch();
|
||||
virtual bool IsRunning() const;
|
||||
|
||||
// MSW-specific methods
|
||||
// --------------------
|
||||
|
||||
// preprocess a message, return true if processed (i.e. no further
|
||||
// dispatching required)
|
||||
virtual bool PreProcessMessage(WXMSG *msg);
|
||||
|
||||
// process a single message
|
||||
virtual void ProcessMessage(WXMSG *msg);
|
||||
|
||||
protected:
|
||||
// should we exit the loop?
|
||||
bool m_shouldExit;
|
||||
|
||||
// the loop exit code
|
||||
int m_exitcode;
|
||||
};
|
||||
|
||||
#endif // _WX_MSW_EVTLOOP_H_
|
||||
|
Reference in New Issue
Block a user