X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bca8c756a30d54ee4fade96a091d78ad8988fd23..7fd80c6f685550715713208680e7d095b03c1632:/src/common/mousemanager.cpp diff --git a/src/common/mousemanager.cpp b/src/common/mousemanager.cpp index c373955038..b000c1b468 100644 --- a/src/common/mousemanager.cpp +++ b/src/common/mousemanager.cpp @@ -3,7 +3,6 @@ // Purpose: implementation of wxMouseEventsManager class // Author: Vadim Zeitlin // Created: 2009-04-21 -// RCS-ID: $Id$ // Copyright: (c) 2009 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -24,6 +23,8 @@ #endif #ifndef WX_PRECOMP + #include "wx/settings.h" + #include "wx/window.h" #endif // WX_PRECOMP #include "wx/mousemanager.h" @@ -43,18 +44,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)) @@ -92,6 +102,7 @@ void wxMouseEventsManager::OnLeftDown(wxMouseEvent& event) } m_state = State_Pressed; + m_win->SetFocus(); m_win->CaptureMouse(); MouseClickBegin(m_item); }