diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2015-06-20 12:46:31 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2015-06-20 14:50:54 +0100 |
commit | dd095d3f1ae2b71fdff8b2d2c497d550d8ac5f28 (patch) | |
tree | be28e92aa57ef6cfd2c50e29b5f4e632a6d0bc44 /sw | |
parent | 1f116adb7cfa7ee6a441693530d5afc94ca70f1a (diff) |
tdf#92166 - dispose the SwSrcEditWindow properly.
Also improve dispose method to cleanup various pointers.
Also avoid crash on post dispose MouseUp event.
Change-Id: Ic337a8306566d5b5c81b939be6f89f34fbcc5847
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/uibase/docvw/srcedtw.cxx | 17 | ||||
-rw-r--r-- | sw/source/uibase/uiview/srcview.cxx | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx index 2412888698db..98bea255c516 100644 --- a/sw/source/uibase/docvw/srcedtw.cxx +++ b/sw/source/uibase/docvw/srcedtw.cxx @@ -283,13 +283,18 @@ void SwSrcEditWindow::dispose() n->removePropertiesChangeListener(listener_.get()); } aSyntaxIdle.Stop(); + if ( pOutWin ) + pOutWin->SetTextView( NULL ); + if ( pTextEngine ) { EndListening( *pTextEngine ); pTextEngine->RemoveView( pTextView ); delete pTextView; + pTextView = NULL; delete pTextEngine; + pTextEngine = NULL; } pHScrollbar.disposeAndClear(); pVScrollbar.disposeAndClear(); @@ -399,10 +404,14 @@ void TextViewOutWin::MouseButtonUp( const MouseEvent &rEvt ) if ( pTextView ) { pTextView->MouseButtonUp( rEvt ); - SfxBindings& rBindings = static_cast<SwSrcEditWindow*>(GetParent())->GetSrcView()->GetViewFrame()->GetBindings(); - rBindings.Invalidate( SID_TABLE_CELL ); - rBindings.Invalidate( SID_CUT ); - rBindings.Invalidate( SID_COPY ); + SfxViewFrame *pFrame = static_cast<SwSrcEditWindow*>(GetParent())->GetSrcView()->GetViewFrame(); + if ( pFrame ) + { + SfxBindings& rBindings = pFrame->GetBindings(); + rBindings.Invalidate( SID_TABLE_CELL ); + rBindings.Invalidate( SID_CUT ); + rBindings.Invalidate( SID_COPY ); + } } } diff --git a/sw/source/uibase/uiview/srcview.cxx b/sw/source/uibase/uiview/srcview.cxx index b29c8975a0b3..db8aeba32fd3 100644 --- a/sw/source/uibase/uiview/srcview.cxx +++ b/sw/source/uibase/uiview/srcview.cxx @@ -243,6 +243,8 @@ SwSrcView::~SwSrcView() (delay != 0) || !url.isEmpty()); EndListening(*pDocShell); delete pSearchItem; + + aEditWin.disposeAndClear(); } void SwSrcView::SaveContentTo(SfxMedium& rMed) |