X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ba0367603b07756b5524067eaa5c6962d059edd..7198c3368055d88249a338eb33b21f051f674806:/src/common/mousemanager.cpp?ds=sidebyside diff --git a/src/common/mousemanager.cpp b/src/common/mousemanager.cpp index b05922e3f7..20849a0167 100644 --- a/src/common/mousemanager.cpp +++ b/src/common/mousemanager.cpp @@ -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)) @@ -94,6 +103,7 @@ void wxMouseEventsManager::OnLeftDown(wxMouseEvent& event) } m_state = State_Pressed; + m_win->SetFocus(); m_win->CaptureMouse(); MouseClickBegin(m_item); }