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 <[email protected]> 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; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
