[Libreoffice-commits] core.git: sc/qa sc/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Thu Aug 30 10:54:23 UTC 2018
sc/qa/unit/ucalc.cxx | 8 ++++----
sc/source/ui/docshell/docfunc.cxx | 25 +++++++++----------------
sc/source/ui/docshell/impex.cxx | 1 +
sc/source/ui/inc/undobase.hxx | 2 +-
sc/source/ui/inc/undoblk.hxx | 8 ++++----
sc/source/ui/inc/undodat.hxx | 2 +-
sc/source/ui/inc/undotab.hxx | 2 +-
sc/source/ui/undo/undobase.cxx | 4 ++--
sc/source/ui/undo/undoblk.cxx | 16 ++++++++--------
sc/source/ui/undo/undodat.cxx | 4 ++--
sc/source/ui/undo/undotab.cxx | 5 +++--
sc/source/ui/unoobj/cellsuno.cxx | 1 +
sc/source/ui/view/viewfun2.cxx | 10 +++-------
sc/source/ui/view/viewfun3.cxx | 10 +++++-----
sc/source/ui/view/viewfun4.cxx | 1 +
sc/source/ui/view/viewfunc.cxx | 6 +++---
16 files changed, 49 insertions(+), 56 deletions(-)
New commits:
commit 1f9f35177aca7000edd0ec5e68e4045e04cce535
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Aug 30 09:47:24 2018 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Aug 30 12:53:56 2018 +0200
pass ScRefUndoData around by std::unique_ptr
Change-Id: I317a0c7665f4c146fc34bcffdae8835cf674ff61
Reviewed-on: https://gerrit.libreoffice.org/59787
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 791b25ab85b2..193522887b8b 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -3748,8 +3748,8 @@ void Test::testCopyPasteSkipEmpty()
m_pDoc->CopyToDocument(aDestRange, InsertDeleteFlags::ALL, false, *pRedoDoc, &aMark);
// Create an undo object for this.
- ScRefUndoData* pRefUndoData = new ScRefUndoData(m_pDoc);
- ScUndoPaste aUndo(&getDocShell(), aDestRange, aMark, std::move(pUndoDoc), std::move(pRedoDoc), InsertDeleteFlags::ALL, pRefUndoData);
+ std::unique_ptr<ScRefUndoData> pRefUndoData(new ScRefUndoData(m_pDoc));
+ ScUndoPaste aUndo(&getDocShell(), aDestRange, aMark, std::move(pUndoDoc), std::move(pRedoDoc), InsertDeleteFlags::ALL, std::move(pRefUndoData));
// Check the content after the paste.
{
@@ -6741,10 +6741,10 @@ ScUndoPaste* Test::createUndoPaste(ScDocShell& rDocSh, const ScRange& rRange, Sc
ScDocument& rDoc = rDocSh.GetDocument();
ScMarkData aMarkData;
aMarkData.SetMarkArea(rRange);
- ScRefUndoData* pRefUndoData = new ScRefUndoData(&rDoc);
+ std::unique_ptr<ScRefUndoData> pRefUndoData(new ScRefUndoData(&rDoc));
return new ScUndoPaste(
- &rDocSh, rRange, aMarkData, std::move(pUndoDoc), nullptr, InsertDeleteFlags::ALL, pRefUndoData, false);
+ &rDocSh, rRange, aMarkData, std::move(pUndoDoc), nullptr, InsertDeleteFlags::ALL, std::move(pRefUndoData), false);
}
void Test::setExpandRefs(bool bExpand)
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index f995de081037..a49e78d89f65 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1799,7 +1799,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
WaitObject aWait( ScDocShell::GetActiveDialogParent() ); // important due to TrackFormulas at UpdateReference
ScDocumentUniquePtr pRefUndoDoc;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if ( bRecord )
{
pRefUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
@@ -1807,7 +1807,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
// pRefUndoDoc is filled in InsertCol / InsertRow
- pUndoData = new ScRefUndoData( &rDoc );
+ pUndoData.reset(new ScRefUndoData( &rDoc ));
rDoc.BeginDrawUndo();
}
@@ -1849,7 +1849,6 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
if (!bApi)
rDocShell.ErrorMessage(STR_MSSG_INSERTCELLS_0);
rDocShell.GetUndoManager()->LeaveListAction();
- delete pUndoData;
return false;
}
@@ -1954,7 +1953,6 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
if (!bApi)
rDocShell.ErrorMessage(STR_MSSG_INSERTCELLS_0);
rDocShell.GetUndoManager()->LeaveListAction();
- delete pUndoData;
return false;
}
}
@@ -2025,7 +2023,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
rDocShell.GetUndoManager()->AddUndoAction( new ScUndoInsertCells(
&rDocShell, ScRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab ),
- nUndoPos, pTabs, pScenarios, eCmd, std::move(pRefUndoDoc), pUndoData, bPartOfPaste ) );
+ nUndoPos, pTabs, pScenarios, eCmd, std::move(pRefUndoDoc), std::move(pUndoData), bPartOfPaste ) );
}
// #i8302 : we remerge growing ranges, with the new part inserted
@@ -2122,7 +2120,6 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
rDocShell.GetUndoManager()->RemoveLastUndoAction();
pRefUndoDoc.reset();
- delete pUndoData;
if (!bApi)
rDocShell.ErrorMessage(STR_INSERT_FULL); // column/row full
}
@@ -2453,7 +2450,7 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
ScDocumentUniquePtr pUndoDoc;
ScDocument* pRefUndoDoc = nullptr;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if ( bRecord )
{
// With the fix for #101329#, UpdateRef always puts cells into pRefUndoDoc at their old position,
@@ -2476,7 +2473,7 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
pRefUndoDoc->InitUndo( &rDoc, 0, nTabCount-1 );
- pUndoData = new ScRefUndoData( &rDoc );
+ pUndoData.reset(new ScRefUndoData( &rDoc ));
rDoc.BeginDrawUndo();
}
@@ -2558,7 +2555,7 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
rDocShell.GetUndoManager()->AddUndoAction( new ScUndoDeleteCells(
&rDocShell, ScRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab ),nUndoPos, pTabs, pScenarios,
- eCmd, std::move(pUndoDoc), pUndoData ) );
+ eCmd, std::move(pUndoDoc), std::move(pUndoData) ) );
}
// #i8302 want to be able to insert into the middle of merged cells
@@ -3181,7 +3178,7 @@ bool ScDocFunc::DeleteTable( SCTAB nTab, bool bRecord )
bRecord = false;
bool bWasLinked = rDoc.IsLinked(nTab);
ScDocumentUniquePtr pUndoDoc;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if (bRecord)
{
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
@@ -3219,7 +3216,7 @@ bool ScDocFunc::DeleteTable( SCTAB nTab, bool bRecord )
// Drawing-Layer has to take care of its own undo!!!
rDoc.BeginDrawUndo(); // DeleteTab generates SdrUndoDelPage
- pUndoData = new ScRefUndoData( &rDoc );
+ pUndoData.reset(new ScRefUndoData( &rDoc ));
}
if (rDoc.DeleteTab(nTab))
@@ -3229,7 +3226,7 @@ bool ScDocFunc::DeleteTable( SCTAB nTab, bool bRecord )
vector<SCTAB> theTabs;
theTabs.push_back(nTab);
rDocShell.GetUndoManager()->AddUndoAction(
- new ScUndoDeleteTab( &rDocShell, theTabs, std::move(pUndoDoc), pUndoData ));
+ new ScUndoDeleteTab( &rDocShell, theTabs, std::move(pUndoDoc), std::move(pUndoData) ));
}
// Update views:
if( bVbaEnabled )
@@ -3260,10 +3257,6 @@ bool ScDocFunc::DeleteTable( SCTAB nTab, bool bRecord )
bSuccess = true;
}
- else
- {
- delete pUndoData;
- }
return bSuccess;
}
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 8a36dded1fe2..e30139cf11b9 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -52,6 +52,7 @@
#include <cellvalue.hxx>
#include <tokenarray.hxx>
#include <documentimport.hxx>
+#include <refundo.hxx>
#include <globstr.hrc>
#include <scresid.hxx>
diff --git a/sc/source/ui/inc/undobase.hxx b/sc/source/ui/inc/undobase.hxx
index 86da282b3f8b..5c33cbf9800a 100644
--- a/sc/source/ui/inc/undobase.hxx
+++ b/sc/source/ui/inc/undobase.hxx
@@ -142,7 +142,7 @@ class ScMoveUndo: public ScSimpleUndo // with references
{
public:
ScMoveUndo( ScDocShell* pDocSh,
- ScDocumentUniquePtr pRefDoc, ScRefUndoData* pRefData,
+ ScDocumentUniquePtr pRefDoc, std::unique_ptr<ScRefUndoData> pRefData,
ScMoveUndoMode eRefMode );
virtual ~ScMoveUndo() override;
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
index c0c5963c97d8..399c7efde0e0 100644
--- a/sc/source/ui/inc/undoblk.hxx
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -44,7 +44,7 @@ class ScUndoInsertCells: public ScMoveUndo
public:
ScUndoInsertCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
- InsCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData,
+ InsCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData,
bool bNewPartOfPaste );
virtual ~ScUndoInsertCells() override;
@@ -79,7 +79,7 @@ class ScUndoDeleteCells: public ScMoveUndo
public:
ScUndoDeleteCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
- DelCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData );
+ DelCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData );
virtual ~ScUndoDeleteCells() override;
virtual void Undo() override;
@@ -111,7 +111,7 @@ public:
ScUndoDeleteMulti( ScDocShell* pNewDocShell,
bool bNewRows, bool bNeedsRefresh, SCTAB nNewTab,
const std::vector<sc::ColRowSpan>& rSpans,
- ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData );
+ ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData );
virtual ~ScUndoDeleteMulti() override;
@@ -187,7 +187,7 @@ public:
const ScMarkData& rMark,
ScDocumentUniquePtr pNewUndoDoc, ScDocumentUniquePtr pNewRedoDoc,
InsertDeleteFlags nNewFlags,
- ScRefUndoData* pRefData,
+ std::unique_ptr<ScRefUndoData> pRefData,
bool bRedoIsFilled = true,
const ScUndoPasteOptions* pOptions = nullptr);
virtual ~ScUndoPaste() override;
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx
index 77d51e356825..edb6599f6319 100644
--- a/sc/source/ui/inc/undodat.hxx
+++ b/sc/source/ui/inc/undodat.hxx
@@ -431,7 +431,7 @@ public:
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
const ScMarkData& rMark,
ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
- ScRefUndoData* pRefData);
+ std::unique_ptr<ScRefUndoData> pRefData);
virtual void Undo() override;
virtual void Redo() override;
virtual void Repeat(SfxRepeatTarget& rTarget) override;
diff --git a/sc/source/ui/inc/undotab.hxx b/sc/source/ui/inc/undotab.hxx
index 8471814c03bd..468e70d84c1d 100644
--- a/sc/source/ui/inc/undotab.hxx
+++ b/sc/source/ui/inc/undotab.hxx
@@ -98,7 +98,7 @@ public:
ScDocShell* pNewDocShell,
const std::vector<SCTAB> &theTabs, //SCTAB nNewTab,
ScDocumentUniquePtr pUndoDocument,
- ScRefUndoData* pRefData );
+ std::unique_ptr<ScRefUndoData> pRefData );
virtual ~ScUndoDeleteTab() override;
virtual void Undo() override;
diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx
index 7285d48af446..4d041ac4ad5b 100644
--- a/sc/source/ui/undo/undobase.cxx
+++ b/sc/source/ui/undo/undobase.cxx
@@ -406,11 +406,11 @@ void ScMultiBlockUndo::ShowBlock()
}
}
-ScMoveUndo::ScMoveUndo( ScDocShell* pDocSh, ScDocumentUniquePtr pRefDoc, ScRefUndoData* pRefData,
+ScMoveUndo::ScMoveUndo( ScDocShell* pDocSh, ScDocumentUniquePtr pRefDoc, std::unique_ptr<ScRefUndoData> pRefData,
ScMoveUndoMode eRefMode ) :
ScSimpleUndo( pDocSh ),
pRefUndoDoc( std::move(pRefDoc) ),
- pRefUndoData( pRefData ),
+ pRefUndoData( std::move(pRefData) ),
eMode( eRefMode )
{
ScDocument& rDoc = pDocShell->GetDocument();
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 480c04d8e2ea..1826896cf3fa 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -69,9 +69,9 @@
ScUndoInsertCells::ScUndoInsertCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
- InsCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData,
+ InsCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData,
bool bNewPartOfPaste ) :
- ScMoveUndo( pNewDocShell, std::move(pUndoDocument), pRefData, SC_UNDO_REFLAST ),
+ ScMoveUndo( pNewDocShell, std::move(pUndoDocument), std::move(pRefData), SC_UNDO_REFLAST ),
aEffRange( rRange ),
nCount( nNewCount ),
pTabs( pNewTabs ),
@@ -338,8 +338,8 @@ bool ScUndoInsertCells::CanRepeat(SfxRepeatTarget& rTarget) const
ScUndoDeleteCells::ScUndoDeleteCells( ScDocShell* pNewDocShell,
const ScRange& rRange, SCTAB nNewCount, SCTAB* pNewTabs, SCTAB* pNewScenarios,
- DelCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData ) :
- ScMoveUndo( pNewDocShell, std::move(pUndoDocument), pRefData, SC_UNDO_REFLAST ),
+ DelCellCmd eNewCmd, ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData ) :
+ ScMoveUndo( pNewDocShell, std::move(pUndoDocument), std::move(pRefData), SC_UNDO_REFLAST ),
aEffRange( rRange ),
nCount( nNewCount ),
pTabs( pNewTabs ),
@@ -623,8 +623,8 @@ ScUndoDeleteMulti::ScUndoDeleteMulti(
ScDocShell* pNewDocShell,
bool bNewRows, bool bNeedsRefresh, SCTAB nNewTab,
const std::vector<sc::ColRowSpan>& rSpans,
- ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData ) :
- ScMoveUndo( pNewDocShell, std::move(pUndoDocument), pRefData, SC_UNDO_REFLAST ),
+ ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData ) :
+ ScMoveUndo( pNewDocShell, std::move(pUndoDocument), std::move(pRefData), SC_UNDO_REFLAST ),
mbRows(bNewRows),
mbRefresh(bNeedsRefresh),
nTab( nNewTab ),
@@ -901,14 +901,14 @@ ScUndoPaste::ScUndoPaste( ScDocShell* pNewDocShell, const ScRangeList& rRanges,
const ScMarkData& rMark,
ScDocumentUniquePtr pNewUndoDoc, ScDocumentUniquePtr pNewRedoDoc,
InsertDeleteFlags nNewFlags,
- ScRefUndoData* pRefData,
+ std::unique_ptr<ScRefUndoData> pRefData,
bool bRedoIsFilled, const ScUndoPasteOptions* pOptions ) :
ScMultiBlockUndo( pNewDocShell, rRanges ),
aMarkData( rMark ),
pUndoDoc( std::move(pNewUndoDoc) ),
pRedoDoc( std::move(pNewRedoDoc) ),
nFlags( nNewFlags ),
- pRefUndoData( pRefData ),
+ pRefUndoData( std::move(pRefData) ),
pRefRedoData( nullptr ),
bRedoFilled( bRedoIsFilled )
{
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
index d0dec03b7fd8..9f2a204e6b5b 100644
--- a/sc/source/ui/undo/undodat.cxx
+++ b/sc/source/ui/undo/undodat.cxx
@@ -1733,12 +1733,12 @@ ScUndoDataForm::ScUndoDataForm( ScDocShell* pNewDocShell,
SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
const ScMarkData& rMark,
ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
- ScRefUndoData* pRefData )
+ std::unique_ptr<ScRefUndoData> pRefData )
: ScBlockUndo(pNewDocShell, ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ), SC_UNDO_SIMPLE)
, mxMarkData(new ScMarkData(rMark))
, xUndoDoc(pNewUndoDoc)
, xRedoDoc(pNewRedoDoc)
- , xRefUndoData(pRefData)
+ , xRefUndoData(std::move(pRefData))
, bRedoFilled(false)
{
// pFill1,pFill2,pFill3 are there so the ctor calls for simple paste (without cutting)
diff --git a/sc/source/ui/undo/undotab.cxx b/sc/source/ui/undo/undotab.cxx
index 689eb309ceb1..bec64334f973 100644
--- a/sc/source/ui/undo/undotab.cxx
+++ b/sc/source/ui/undo/undotab.cxx
@@ -40,6 +40,7 @@
#include <viewdata.hxx>
#include <progress.hxx>
#include <markdata.hxx>
+#include <refundo.hxx>
// for ScUndoRenameObject - might me moved to another file later
#include <svx/svditer.hxx>
@@ -247,8 +248,8 @@ bool ScUndoInsertTables::CanRepeat(SfxRepeatTarget& rTarget) const
}
ScUndoDeleteTab::ScUndoDeleteTab( ScDocShell* pNewDocShell, const vector<SCTAB> &aTab,
- ScDocumentUniquePtr pUndoDocument, ScRefUndoData* pRefData ) :
- ScMoveUndo( pNewDocShell, std::move(pUndoDocument), pRefData, SC_UNDO_REFLAST )
+ ScDocumentUniquePtr pUndoDocument, std::unique_ptr<ScRefUndoData> pRefData ) :
+ ScMoveUndo( pNewDocShell, std::move(pUndoDocument), std::move(pRefData), SC_UNDO_REFLAST )
{
theTabs.insert(theTabs.end(), aTab.begin(), aTab.end() );
SetChangeTrack();
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 4d31248c34e9..40386f297348 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -134,6 +134,7 @@
#include <condformatuno.hxx>
#include <TablePivotCharts.hxx>
#include <table.hxx>
+#include <refundo.hxx>
#include <list>
#include <memory>
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 3f343b6d69e3..94b01f2f420b 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -2331,7 +2331,7 @@ bool ScViewFunc::DeleteTables(const vector<SCTAB> &TheTabs, bool bRecord )
bool bWasLinked = false;
ScDocumentUniquePtr pUndoDoc;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if (bRecord)
{
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
@@ -2385,7 +2385,7 @@ bool ScViewFunc::DeleteTables(const vector<SCTAB> &TheTabs, bool bRecord )
rDoc.BeginDrawUndo(); // DeleteTab creates a SdrUndoDelPage
- pUndoData = new ScRefUndoData( &rDoc );
+ pUndoData.reset(new ScRefUndoData( &rDoc ));
}
bool bDelDone = false;
@@ -2411,7 +2411,7 @@ bool ScViewFunc::DeleteTables(const vector<SCTAB> &TheTabs, bool bRecord )
{
pDocSh->GetUndoManager()->AddUndoAction(
new ScUndoDeleteTab( GetViewData().GetDocShell(), TheTabs,
- std::move(pUndoDoc), pUndoData ));
+ std::move(pUndoDoc), std::move(pUndoData) ));
}
if (bDelDone)
@@ -2435,10 +2435,6 @@ bool ScViewFunc::DeleteTables(const vector<SCTAB> &TheTabs, bool bRecord )
pSfxApp->Broadcast( SfxHint( SfxHintId::ScDbAreasChanged ) );
pSfxApp->Broadcast( SfxHint( SfxHintId::ScAreaLinksChanged ) );
}
- else
- {
- delete pUndoData;
- }
return bDelDone;
}
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 0453c0c0bd85..c633df4e82ee 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -1243,7 +1243,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
ScDocumentUniquePtr pUndoDoc;
ScDocument* pRefUndoDoc = nullptr;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if ( bRecord )
{
@@ -1260,7 +1260,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
pRefUndoDoc->InitUndo( pDoc, 0, nTabCount-1 );
- pUndoData = new ScRefUndoData( pDoc );
+ pUndoData.reset(new ScRefUndoData( pDoc ));
}
}
@@ -1413,7 +1413,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
SfxUndoAction* pUndo = new ScUndoPaste(
pDocSh, ScRange(nStartCol, nStartRow, nStartTab, nUndoEndCol, nUndoEndRow, nEndTab),
- aFilteredMark, std::move(pUndoDoc), std::move(pRedoDoc), nFlags | nUndoFlags, pUndoData,
+ aFilteredMark, std::move(pUndoDoc), std::move(pRedoDoc), nFlags | nUndoFlags, std::move(pUndoData),
false, &aOptions ); // false = Redo data not yet copied
if ( bInsertCells )
@@ -1959,7 +1959,7 @@ void ScViewFunc::DataFormPutData( SCROW nCurrentRow ,
const bool bRecord( pDoc->IsUndoEnabled());
ScDocument* pUndoDoc = nullptr;
ScDocument* pRedoDoc = nullptr;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
SCTAB nTab = GetViewData().GetTabNo();
SCTAB nStartTab = nTab;
SCTAB nEndTab = nTab;
@@ -1998,7 +1998,7 @@ void ScViewFunc::DataFormPutData( SCROW nCurrentRow ,
nStartCol, nCurrentRow, nStartTab,
nUndoEndCol, nUndoEndRow, nEndTab, rMark,
pUndoDoc, pRedoDoc,
- pUndoData );
+ std::move(pUndoData) );
pUndoMgr->AddUndoAction( new ScUndoWrapper( pUndo ), true );
PaintPartFlags nPaint = PaintPartFlags::Grid;
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
index df21a4940e50..daa553c1d204 100644
--- a/sc/source/ui/view/viewfun4.cxx
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -70,6 +70,7 @@
#include <tokenarray.hxx>
#include <refupdatecontext.hxx>
#include <gridwin.hxx>
+#include <refundo.hxx>
using namespace com::sun::star;
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 7ba426a61828..7aa6fc9a65d9 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -1821,7 +1821,7 @@ void ScViewFunc::DeleteMulti( bool bRows )
WaitObject aWait( GetFrameWin() ); // important for TrackFormulas in UpdateReference
ScDocumentUniquePtr pUndoDoc;
- ScRefUndoData* pUndoData = nullptr;
+ std::unique_ptr<ScRefUndoData> pUndoData;
if (bRecord)
{
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
@@ -1844,7 +1844,7 @@ void ScViewFunc::DeleteMulti( bool bRows )
pUndoDoc->AddUndoTab( 0, nTabCount-1 );
rDoc.CopyToDocument( 0,0,0, MAXCOL,MAXROW,MAXTAB, InsertDeleteFlags::FORMULA,false,*pUndoDoc );
- pUndoData = new ScRefUndoData( &rDoc );
+ pUndoData.reset(new ScRefUndoData( &rDoc ));
rDoc.BeginDrawUndo();
}
@@ -1877,7 +1877,7 @@ void ScViewFunc::DeleteMulti( bool bRows )
{
pDocSh->GetUndoManager()->AddUndoAction(
new ScUndoDeleteMulti(
- pDocSh, bRows, bNeedRefresh, nTab, aSpans, std::move(pUndoDoc), pUndoData));
+ pDocSh, bRows, bNeedRefresh, nTab, aSpans, std::move(pUndoDoc), std::move(pUndoData)));
}
if (!AdjustRowHeight(0, MAXROW))
More information about the Libreoffice-commits
mailing list