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 14:50:54 +0100
commitdd095d3f1ae2b71fdff8b2d2c497d550d8ac5f28 (patch)
treebe28e92aa57ef6cfd2c50e29b5f4e632a6d0bc44
parent1f116adb7cfa7ee6a441693530d5afc94ca70f1a (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 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)