diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-19 17:21:31 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-19 17:22:45 -0500 |
commit | 1df43525da87c181e7c9b42967f30072951cb794 (patch) | |
tree | e84e538b7aa8c6c3f5528c8e768e2cbb55ee960f /sc | |
parent | 50f4d165b42a85993685e546cbc524bc1bf68e5c (diff) |
Fix a crash when copying a sheet with drawing obj to a new document.
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/view/viewfun2.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index 77a26016f519..3cb218d20867 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -47,6 +47,7 @@ #include <svl/stritem.hxx> #include <svl/zforlist.hxx> #include <svl/svstdarr.hxx> +#include <svx/svdview.hxx> #include <vcl/msgbox.hxx> #include <vcl/sound.hxx> #include <vcl/waitobj.hxx> @@ -2466,7 +2467,7 @@ void ScViewFunc::MoveTable( sal_Bool bUndo (pDoc->IsUndoEnabled()); bool bRename = pNewTabName && !pNewTabName->isEmpty(); - sal_Bool bNewDoc = ( nDestDocNo == SC_DOC_NEW ); + bool bNewDoc = (nDestDocNo == SC_DOC_NEW); if ( bNewDoc ) { nDestTab = 0; // firstly insert @@ -2646,7 +2647,16 @@ void ScViewFunc::MoveTable( pDestDoc->DeleteTab(static_cast<SCTAB>(TheTabs.size())); // old first table if (pDestViewSh) + { + // Make sure to clear the cached page view after sheet + // deletion, which still points to the sdr page belonging to + // the deleted sheet. + SdrView* pSdrView = pDestViewSh->GetSdrView(); + if (pSdrView) + pSdrView->ClearPageView(); + pDestViewSh->TabChanged(); // Pages auf dem Drawing-Layer + } pDestShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID | PAINT_TOP | PAINT_LEFT | PAINT_EXTRAS | PAINT_SIZE ); |