summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2015-06-20 12:46:31 +0100
committerMichael Meeks <michael.meeks@collabora.com>2015-06-20 15:00:30 +0100
commitffc08eac223211d3ca2d4ebadb9ccb8e26d22a5e (patch)
treef89e10be6f0700e4b4e4b4b5c00c0bd5209c6b4a
parent88b77c0b1866db0d729cc2c15b5d8d4f01e9630d (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
-rw-r--r--sw/source/uibase/docvw/srcedtw.cxx17
-rw-r--r--sw/source/uibase/uiview/srcview.cxx2
2 files changed, 15 insertions, 4 deletions
diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx
index eb9dbf4b5259..c15e72dda1a7 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)