[Libreoffice-commits] core.git: sc/qa sc/source
Stephan Bergmann
sbergman at redhat.com
Mon Sep 28 06:56:33 PDT 2015
sc/qa/unit/ucalc.cxx | 8 +++++---
sc/source/ui/docshell/docfunc.cxx | 12 ++++++------
sc/source/ui/docshell/docfuncutil.cxx | 13 +++++++------
sc/source/ui/inc/docfuncutil.hxx | 6 +++---
sc/source/ui/inc/undoblk.hxx | 4 ++--
sc/source/ui/undo/undoblk3.cxx | 12 ++++++++----
6 files changed, 31 insertions(+), 24 deletions(-)
New commits:
commit ee9b3c1f1cb7445f0a7e76736e32fe81878f8d00
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Sep 28 15:56:04 2015 +0200
Return the std::unique_ptr itself here, not a raw pointer
Change-Id: I8f649229ffce60de16e6b4611b1c081811cef225
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index b5264db..469abc2 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -87,7 +87,9 @@
#include <sfx2/docfile.hxx>
#include <iostream>
+#include <memory>
#include <sstream>
+#include <utility>
#include <vector>
#include <com/sun/star/i18n/TransliterationModules.hpp>
@@ -6212,10 +6214,10 @@ void Test::testDeleteContents()
aMark.SelectOneTable(0);
aMark.SetMarkArea(aRange);
- ScDocument* pUndoDoc = new ScDocument(SCDOCMODE_UNDO);
+ std::unique_ptr<ScDocument> pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
pUndoDoc->InitUndo(m_pDoc, 0, 0);
- m_pDoc->CopyToDocument(aRange, IDF_CONTENTS, false, pUndoDoc, &aMark);
- ScUndoDeleteContents aUndo(&getDocShell(), aMark, aRange, pUndoDoc, false, IDF_CONTENTS, true);
+ m_pDoc->CopyToDocument(aRange, IDF_CONTENTS, false, pUndoDoc.get(), &aMark);
+ ScUndoDeleteContents aUndo(&getDocShell(), aMark, aRange, std::move(pUndoDoc), false, IDF_CONTENTS, true);
clearRange(m_pDoc, aRange);
CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(ScAddress(3,15,0))); // formula
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 0ff11a5..15fa0ec 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -582,7 +582,7 @@ bool ScDocFunc::DeleteContents(
ScMarkData aMultiMark = rMark;
aMultiMark.SetMarking(false); // fuer MarkToMulti
- ScDocument* pUndoDoc = NULL;
+ std::unique_ptr<ScDocument> pUndoDoc;
bool bMulti = aMultiMark.IsMultiMarked();
aMultiMark.MarkToMulti();
aMultiMark.GetMultiMarkArea( aMarkRange );
@@ -623,7 +623,7 @@ bool ScDocFunc::DeleteContents(
if ( bRecord )
{
pUndoDoc = sc::DocFuncUtil::createDeleteContentsUndoDoc(rDoc, aMultiMark, aMarkRange, nFlags, bMulti);
- pDataSpans.reset(sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, aMultiMark, aMarkRange));
+ pDataSpans = sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, aMultiMark, aMarkRange);
}
rDoc.DeleteSelection( nFlags, aMultiMark );
@@ -633,7 +633,7 @@ bool ScDocFunc::DeleteContents(
{
sc::DocFuncUtil::addDeleteContentsUndo(
rDocShell.GetUndoManager(), &rDocShell, aMultiMark, aExtendedRange,
- pUndoDoc, nFlags, pDataSpans, bMulti, bDrawUndo);
+ std::move(pUndoDoc), nFlags, pDataSpans, bMulti, bDrawUndo);
}
if (!AdjustRowHeight( aExtendedRange ))
@@ -688,11 +688,11 @@ bool ScDocFunc::DeleteCell(
// To keep track of all non-empty cells within the deleted area.
std::shared_ptr<ScSimpleUndo::DataSpansType> pDataSpans;
- ScDocument* pUndoDoc = NULL;
+ std::unique_ptr<ScDocument> pUndoDoc;
if (bRecord)
{
pUndoDoc = sc::DocFuncUtil::createDeleteContentsUndoDoc(rDoc, rMark, rPos, nFlags, false);
- pDataSpans.reset(sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, rMark, rPos));
+ pDataSpans = sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, rMark, rPos);
}
rDoc.DeleteArea(rPos.Col(), rPos.Row(), rPos.Col(), rPos.Row(), rMark, nFlags);
@@ -700,7 +700,7 @@ bool ScDocFunc::DeleteCell(
if (bRecord)
{
sc::DocFuncUtil::addDeleteContentsUndo(
- rDocShell.GetUndoManager(), &rDocShell, rMark, rPos, pUndoDoc,
+ rDocShell.GetUndoManager(), &rDocShell, rMark, rPos, std::move(pUndoDoc),
nFlags, pDataSpans, false, bDrawUndo);
}
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index 63f1f1c..5bd771b 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -25,6 +25,7 @@
#include <undoblk.hxx>
#include <memory>
+#include <utility>
namespace sc {
@@ -39,7 +40,7 @@ bool DocFuncUtil::hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMa
return false;
}
-ScDocument* DocFuncUtil::createDeleteContentsUndoDoc(
+std::unique_ptr<ScDocument> DocFuncUtil::createDeleteContentsUndoDoc(
ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
InsertDeleteFlags nFlags, bool bOnlyMarked )
{
@@ -68,24 +69,24 @@ ScDocument* DocFuncUtil::createDeleteContentsUndoDoc(
nUndoDocFlags |= IDF_NOCAPTIONS;
rDoc.CopyToDocument(aCopyRange, nUndoDocFlags, bOnlyMarked, pUndoDoc.get(), &rMark);
- return pUndoDoc.release();
+ return pUndoDoc;
}
void DocFuncUtil::addDeleteContentsUndo(
svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
- const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags,
+ const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
bool bMulti, bool bDrawUndo )
{
std::unique_ptr<ScUndoDeleteContents> pUndo(
new ScUndoDeleteContents(
- pDocSh, rMark, rRange, pUndoDoc, bMulti, nFlags, bDrawUndo));
+ pDocSh, rMark, rRange, std::move(pUndoDoc), bMulti, nFlags, bDrawUndo));
pUndo->SetDataSpans(pSpans);
pUndoMgr->AddUndoAction(pUndo.release());
}
-ScSimpleUndo::DataSpansType* DocFuncUtil::getNonEmptyCellSpans(
+std::unique_ptr<ScSimpleUndo::DataSpansType> DocFuncUtil::getNonEmptyCellSpans(
const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange )
{
std::unique_ptr<ScSimpleUndo::DataSpansType> pDataSpans(new ScSimpleUndo::DataSpansType);
@@ -107,7 +108,7 @@ ScSimpleUndo::DataSpansType* DocFuncUtil::getNonEmptyCellSpans(
}
}
- return pDataSpans.release();
+ return pDataSpans;
}
}
diff --git a/sc/source/ui/inc/docfuncutil.hxx b/sc/source/ui/inc/docfuncutil.hxx
index e1db8ce..bd99ab6 100644
--- a/sc/source/ui/inc/docfuncutil.hxx
+++ b/sc/source/ui/inc/docfuncutil.hxx
@@ -25,17 +25,17 @@ public:
static bool hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMark );
- static ScDocument* createDeleteContentsUndoDoc(
+ static std::unique_ptr<ScDocument> createDeleteContentsUndoDoc(
ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
InsertDeleteFlags nFlags, bool bOnlyMarked );
static void addDeleteContentsUndo(
svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
- const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags,
+ const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
bool bMulti, bool bDrawUndo );
- static ScSimpleUndo::DataSpansType* getNonEmptyCellSpans(
+ static std::unique_ptr<ScSimpleUndo::DataSpansType> getNonEmptyCellSpans(
const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange );
};
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
index 4013805..15df3c2a 100644
--- a/sc/source/ui/inc/undoblk.hxx
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -255,7 +255,7 @@ public:
ScUndoDeleteContents( ScDocShell* pNewDocShell,
const ScMarkData& rMark,
const ScRange& rRange,
- ScDocument* pNewUndoDoc, bool bNewMulti,
+ std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
InsertDeleteFlags nNewFlags, bool bObjects );
virtual ~ScUndoDeleteContents();
@@ -273,7 +273,7 @@ private:
ScRange aRange;
ScMarkData aMarkData;
- ScDocument* pUndoDoc; // Block mark and deleted data
+ std::unique_ptr<ScDocument> pUndoDoc; // Block mark and deleted data
SdrUndoAction* pDrawUndo; // Deleted objects
sal_uLong nStartChangeAction;
sal_uLong nEndChangeAction;
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index 762797d..4a891da 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -17,6 +17,11 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <sal/config.h>
+
+#include <memory>
+#include <utility>
+
#include "scitems.hxx"
#include <svx/algitem.hxx>
#include <editeng/boxitem.hxx>
@@ -76,12 +81,12 @@ TYPEINIT1(ScUndoUpdateAreaLink, SfxUndoAction);
ScUndoDeleteContents::ScUndoDeleteContents(
ScDocShell* pNewDocShell,
const ScMarkData& rMark, const ScRange& rRange,
- ScDocument* pNewUndoDoc, bool bNewMulti,
+ std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
InsertDeleteFlags nNewFlags, bool bObjects )
: ScSimpleUndo( pNewDocShell ),
aRange ( rRange ),
aMarkData ( rMark ),
- pUndoDoc ( pNewUndoDoc ),
+ pUndoDoc ( std::move(pNewUndoDoc) ),
pDrawUndo ( NULL ),
nFlags ( nNewFlags ),
bMulti ( bNewMulti ) // unnecessary
@@ -97,7 +102,6 @@ ScUndoDeleteContents::ScUndoDeleteContents(
ScUndoDeleteContents::~ScUndoDeleteContents()
{
- delete pUndoDoc;
DeleteSdrUndoAction( pDrawUndo );
}
@@ -115,7 +119,7 @@ void ScUndoDeleteContents::SetChangeTrack()
{
ScChangeTrack* pChangeTrack = pDocShell->GetDocument().GetChangeTrack();
if ( pChangeTrack && (nFlags & IDF_CONTENTS) )
- pChangeTrack->AppendContentRange( aRange, pUndoDoc,
+ pChangeTrack->AppendContentRange( aRange, pUndoDoc.get(),
nStartChangeAction, nEndChangeAction );
else
nStartChangeAction = nEndChangeAction = 0;
More information about the Libreoffice-commits
mailing list