summaryrefslogtreecommitdiff
path: root/sc/source/ui/undo/refundo.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/undo/refundo.cxx')
-rw-r--r--sc/source/ui/undo/refundo.cxx38
1 files changed, 23 insertions, 15 deletions
diff --git a/sc/source/ui/undo/refundo.cxx b/sc/source/ui/undo/refundo.cxx
index 623e7b6a7a18..a5c38548d337 100644
--- a/sc/source/ui/undo/refundo.cxx
+++ b/sc/source/ui/undo/refundo.cxx
@@ -35,28 +35,36 @@
#include <refupdatecontext.hxx>
ScRefUndoData::ScRefUndoData( const ScDocument* pDoc ) :
- pUnoRefs( NULL )
+ pDBCollection(NULL),
+ pRangeName(NULL),
+ pPrintRanges(pDoc->CreatePrintRangeSaver()),
+ pDPCollection(NULL),
+ pDetOpList(NULL),
+ pChartListenerCollection(NULL),
+ pAreaLinks(NULL),
+ pUnoRefs(NULL)
{
- ScDBCollection* pOldDBColl = pDoc->GetDBCollection();
- pDBCollection = pOldDBColl ? new ScDBCollection(*pOldDBColl) : NULL;
+ const ScDBCollection* pOldDBColl = pDoc->GetDBCollection();
+ if (pOldDBColl && !pOldDBColl->empty())
+ pDBCollection = new ScDBCollection(*pOldDBColl);
- ScRangeName* pOldRanges = ((ScDocument*)pDoc)->GetRangeName(); //! const
- pRangeName = pOldRanges ? new ScRangeName(*pOldRanges) : NULL;
-
- pPrintRanges = pDoc->CreatePrintRangeSaver(); // recreated
+ const ScRangeName* pOldRanges = pDoc->GetRangeName();
+ if (pOldRanges && !pOldRanges->empty())
+ pRangeName = new ScRangeName(*pOldRanges);
// when handling Pivot solely keep the range?
- ScDPCollection* pOldDP = ((ScDocument*)pDoc)->GetDPCollection(); //! const
- pDPCollection = pOldDP ? new ScDPCollection(*pOldDP) : NULL;
+ const ScDPCollection* pOldDP = pDoc->GetDPCollection();
+ if (pOldDP && pOldDP->GetCount())
+ pDPCollection = new ScDPCollection(*pOldDP);
- ScDetOpList* pOldDetOp = pDoc->GetDetOpList();
- pDetOpList = pOldDetOp ? new ScDetOpList(*pOldDetOp) : 0;
+ const ScDetOpList* pOldDetOp = pDoc->GetDetOpList();
+ if (pOldDetOp && pOldDetOp->Count())
+ pDetOpList = new ScDetOpList(*pOldDetOp);
- ScChartListenerCollection* pOldChartListenerCollection =
- pDoc->GetChartListenerCollection();
- pChartListenerCollection = pOldChartListenerCollection ?
- new ScChartListenerCollection( *pOldChartListenerCollection ) : NULL;
+ const ScChartListenerCollection* pOldChartLisColl = pDoc->GetChartListenerCollection();
+ if (pOldChartLisColl)
+ pChartListenerCollection = new ScChartListenerCollection(*pOldChartLisColl);
pAreaLinks = ScAreaLinkSaveCollection::CreateFromDoc(pDoc); // returns NULL if empty