diff options
Diffstat (limited to 'sw/source/uibase/docvw/edtwin.cxx')
-rw-r--r-- | sw/source/uibase/docvw/edtwin.cxx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 22b968a1b4e3..71042f0aa7aa 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -4968,17 +4968,36 @@ SwEditWin::SwEditWin(vcl::Window *pParent, SwView &rMyView): SwEditWin::~SwEditWin() { + disposeOnce(); +} + +void SwEditWin::dispose() +{ m_aKeyInputTimer.Stop(); + delete m_pShadCrsr; + m_pShadCrsr = NULL; + delete m_pRowColumnSelectionStart; + m_pRowColumnSelectionStart = NULL; + if( m_pQuickHlpData->m_bIsDisplayed && m_rView.GetWrtShellPtr() ) m_pQuickHlpData->Stop( m_rView.GetWrtShell() ); g_bExecuteDrag = false; delete m_pApplyTempl; + m_pApplyTempl = NULL; + m_rView.SetDrawFuncPtr(NULL); delete m_pUserMarker; + m_pUserMarker = NULL; + delete m_pAnchorMarker; + m_pAnchorMarker = NULL; + + m_aFrameControlsManager.dispose(); + + vcl::Window::dispose(); } /** @@ -5061,9 +5080,10 @@ void SwEditWin::GetFocus() void SwEditWin::LoseFocus() { - m_rView.GetWrtShell().InvalidateAccessibleFocus(); + if (m_rView.GetWrtShellPtr()) + m_rView.GetWrtShell().InvalidateAccessibleFocus(); Window::LoseFocus(); - if( m_pQuickHlpData->m_bIsDisplayed ) + if( m_pQuickHlpData && m_pQuickHlpData->m_bIsDisplayed ) m_pQuickHlpData->Stop( m_rView.GetWrtShell() ); } |