added default ctor to wxMouseEventsManager, this is convenient when deriving window classes (which must provide default ctors to e.g. allow loading them from XRC) from it

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60839 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-05-31 14:43:01 +00:00
parent 0598625cb2
commit 4b14a2f79b
3 changed files with 39 additions and 7 deletions

View File

@@ -34,8 +34,11 @@ class WXDLLIMPEXP_CORE wxMouseEventsManager : public wxEvtHandler
{
public:
// a mouse event manager is always associated with a window and must be
// deleted by the window when it is destroyed
wxMouseEventsManager(wxWindow *win);
// deleted by the window when it is destroyed so if it is created using the
// default ctor Create() must be called later
wxMouseEventsManager() { Init(); }
wxMouseEventsManager(wxWindow *win) { Init(); Create(win); }
bool Create(wxWindow *win);
virtual ~wxMouseEventsManager();
@@ -113,6 +116,8 @@ private:
State_Dragging // the item is being dragged
};
// common part of both ctors
void Init();
// various event handlers
void OnCaptureLost(wxMouseCaptureLostEvent& event);
@@ -121,8 +126,9 @@ private:
void OnMove(wxMouseEvent& event);
// the associated window, never NULL
wxWindow * const m_win;
// the associated window, never NULL except between the calls to the
// default ctor and Create()
wxWindow *m_win;
// the current state
State m_state;

View File

@@ -37,6 +37,15 @@
class wxMouseEventsManager : public wxEvtHandler
{
public:
/**
Default constructor.
You must call Create() to finish initializing the mouse events manager.
If possible, avoid the use of this constructor in favour of the other
one which fully initializes the mouse events manager immediately.
*/
wxMouseEventsManager();
/**
Constructor creates the manager for the window.
@@ -46,6 +55,14 @@ public:
*/
wxMouseEventsManager(wxWindow *win);
/**
Finishes initialization of the object created using default
constructor.
Currently always returns @true.
*/
bool Create(wxWindow *win);
protected:
/**
Must be overridden to return the item at the given position.

View File

@@ -45,18 +45,27 @@ END_EVENT_TABLE()
// wxMouseEventsManager implementation
// ============================================================================
wxMouseEventsManager::wxMouseEventsManager(wxWindow *win)
: m_win(win)
void wxMouseEventsManager::Init()
{
m_win = NULL;
m_state = State_Normal;
m_item = wxNOT_FOUND;
}
bool wxMouseEventsManager::Create(wxWindow *win)
{
wxASSERT_MSG( !m_win, "Create() must not be called twice" );
m_win = win;
win->PushEventHandler(this);
return true;
}
wxMouseEventsManager::~wxMouseEventsManager()
{
m_win->RemoveEventHandler(this);
if ( m_win )
m_win->RemoveEventHandler(this);
}
void wxMouseEventsManager::OnCaptureLost(wxMouseCaptureLostEvent& WXUNUSED(event))