summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-01-19 17:21:31 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-01-19 17:22:45 -0500
commit1df43525da87c181e7c9b42967f30072951cb794 (patch)
treee84e538b7aa8c6c3f5528c8e768e2cbb55ee960f
parent50f4d165b42a85993685e546cbc524bc1bf68e5c (diff)
Fix a crash when copying a sheet with drawing obj to a new document.
-rw-r--r--sc/source/ui/view/viewfun2.cxx12
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 );