diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-06-14 15:43:09 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-06-14 15:43:09 +0200 |
commit | e916e0a39ad2e96a0d6b5b866763e57498898c55 (patch) | |
tree | 062528c97aeb28de6e22902a667fb57a1f40f414 /sw | |
parent | a6aa57ff591fdf3d834a7e0b1e9e2ebad1d87c5c (diff) |
Use unique_ptr for UnodTableCpyTable_Entry members
Change-Id: I925523d3c3fde2d82aa2509aef2c62c8e9686f40
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/inc/UndoTable.hxx | 2 | ||||
-rw-r--r-- | sw/source/core/undo/untbl.cxx | 64 |
2 files changed, 27 insertions, 39 deletions
diff --git a/sw/source/core/inc/UndoTable.hxx b/sw/source/core/inc/UndoTable.hxx index 83dab4172198..a83434660497 100644 --- a/sw/source/core/inc/UndoTable.hxx +++ b/sw/source/core/inc/UndoTable.hxx @@ -287,7 +287,7 @@ class SwUndoTableCpyTable : public SwUndo //b6341295: When redlining is active, PrepareRedline has to create the //redlining attributes for the new and the old table cell content - static SwUndo* PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox, + static std::unique_ptr<SwUndo> PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox, const SwPosition& rPos, bool& rJoin, bool bRedo ); public: diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx index 25552f46b326..c1d0dc50afaa 100644 --- a/sw/source/core/undo/untbl.cxx +++ b/sw/source/core/undo/untbl.cxx @@ -65,6 +65,7 @@ #include <calbck.hxx> #include <memory> +#include <utility> #include <vector> #include <o3tl/make_unique.hxx> #ifdef DBG_UTIL @@ -84,14 +85,13 @@ typedef std::vector<std::shared_ptr<SfxItemSet> > SfxItemSets; struct UndoTableCpyTable_Entry { sal_uLong nBoxIdx, nOffset; - SfxItemSet* pBoxNumAttr; - SwUndo* pUndo; + std::unique_ptr<SfxItemSet> pBoxNumAttr; + std::unique_ptr<SwUndo> pUndo; // Was the last paragraph of the new and the first paragraph of the old content joined? bool bJoin; // For redlining only explicit UndoTableCpyTable_Entry( const SwTableBox& rBox ); - ~UndoTableCpyTable_Entry(); }; class SaveBox; @@ -2402,16 +2402,10 @@ void SwUndoTableNumFormat::SetBox( const SwTableBox& rBox ) UndoTableCpyTable_Entry::UndoTableCpyTable_Entry( const SwTableBox& rBox ) : nBoxIdx( rBox.GetSttIdx() ), nOffset( 0 ), - pBoxNumAttr( nullptr ), pUndo( nullptr ), bJoin( false ) + bJoin( false ) { } -UndoTableCpyTable_Entry::~UndoTableCpyTable_Entry() -{ - delete pUndo; - delete pBoxNumAttr; -} - SwUndoTableCpyTable::SwUndoTableCpyTable(const SwDoc* pDoc) : SwUndo( SwUndoId::TBLCPYTBL, pDoc ) , m_pArr(new SwUndoTableCpyTable_Entries) @@ -2447,7 +2441,7 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext) // b62341295: Redline for copying tables const SwNode *pEndNode = rBox.GetSttNd()->EndOfSectionNode(); SwPaM aPam( aInsIdx.GetNode(), *pEndNode ); - SwUndoDelete* pUndo = nullptr; + std::unique_ptr<SwUndoDelete> pUndo; if( IDocumentRedlineAccess::IsRedlineOn( GetRedlineFlags() ) ) { @@ -2457,9 +2451,9 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext) if( pEntry->pUndo ) { SwUndoDelete *const pUndoDelete = - dynamic_cast<SwUndoDelete*>(pEntry->pUndo); + dynamic_cast<SwUndoDelete*>(pEntry->pUndo.get()); SwUndoRedlineDelete *const pUndoRedlineDelete = - dynamic_cast<SwUndoRedlineDelete*>(pEntry->pUndo); + dynamic_cast<SwUndoRedlineDelete*>(pEntry->pUndo.get()); OSL_ASSERT(pUndoDelete || pUndoRedlineDelete); if (pUndoRedlineDelete) { @@ -2503,8 +2497,7 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext) if( pEntry->pUndo ) { pEntry->pUndo->UndoImpl(rContext); - delete pEntry->pUndo; - pEntry->pUndo = nullptr; + pEntry->pUndo.reset(); } if( bShiftPam ) { @@ -2520,19 +2513,18 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext) else *aPam.GetPoint() = SwPosition( aTmpIdx ); } - pUndo = new SwUndoDelete( aPam, bDeleteCompleteParagraph, true ); + pUndo = o3tl::make_unique<SwUndoDelete>( aPam, bDeleteCompleteParagraph, true ); } else { - pUndo = new SwUndoDelete( aPam, true ); + pUndo = o3tl::make_unique<SwUndoDelete>( aPam, true ); if( pEntry->pUndo ) { pEntry->pUndo->UndoImpl(rContext); - delete pEntry->pUndo; - pEntry->pUndo = nullptr; + pEntry->pUndo.reset(); } } - pEntry->pUndo = pUndo; + pEntry->pUndo = std::move(pUndo); aInsIdx = rBox.GetSttIdx() + 1; rDoc.GetNodes().Delete( aInsIdx ); @@ -2550,13 +2542,12 @@ void SwUndoTableCpyTable::UndoImpl(::sw::UndoRedoContext & rContext) if( pEntry->pBoxNumAttr ) { rBox.ClaimFrameFormat()->SetFormatAttr( *pEntry->pBoxNumAttr ); - delete pEntry->pBoxNumAttr; - pEntry->pBoxNumAttr = nullptr; + pEntry->pBoxNumAttr.reset(); } if( aTmpSet.Count() ) { - pEntry->pBoxNumAttr = new SfxItemSet( rDoc.GetAttrPool(), + pEntry->pBoxNumAttr = o3tl::make_unique<SfxItemSet>( rDoc.GetAttrPool(), RES_BOXATR_FORMAT, RES_BOXATR_VALUE, RES_VERT_ORIENT, RES_VERT_ORIENT, 0 ); pEntry->pBoxNumAttr->Put( aTmpSet ); @@ -2598,7 +2589,7 @@ void SwUndoTableCpyTable::RedoImpl(::sw::UndoRedoContext & rContext) // b62341295: Redline for copying tables - Start. rDoc.GetNodes().MakeTextNode( aInsIdx, rDoc.GetDfltTextFormatColl() ); SwPaM aPam( aInsIdx.GetNode(), *rBox.GetSttNd()->EndOfSectionNode()); - SwUndo* pUndo = IDocumentRedlineAccess::IsRedlineOn( GetRedlineFlags() ) ? nullptr : new SwUndoDelete( aPam, true ); + std::unique_ptr<SwUndo> pUndo = IDocumentRedlineAccess::IsRedlineOn( GetRedlineFlags() ) ? nullptr : o3tl::make_unique<SwUndoDelete>( aPam, true ); if( pEntry->pUndo ) { pEntry->pUndo->UndoImpl(rContext); @@ -2621,10 +2612,9 @@ void SwUndoTableCpyTable::RedoImpl(::sw::UndoRedoContext & rContext) pUndo = PrepareRedline( &rDoc, rBox, aTmpPos, pEntry->bJoin, true ); } } - delete pEntry->pUndo; - pEntry->pUndo = nullptr; + pEntry->pUndo.reset(); } - pEntry->pUndo = pUndo; + pEntry->pUndo = std::move(pUndo); // b62341295: Redline for copying tables - End. aInsIdx = rBox.GetSttIdx() + 1; @@ -2642,13 +2632,12 @@ void SwUndoTableCpyTable::RedoImpl(::sw::UndoRedoContext & rContext) if( pEntry->pBoxNumAttr ) { rBox.ClaimFrameFormat()->SetFormatAttr( *pEntry->pBoxNumAttr ); - delete pEntry->pBoxNumAttr; - pEntry->pBoxNumAttr = nullptr; + pEntry->pBoxNumAttr.reset(); } if( aTmpSet.Count() ) { - pEntry->pBoxNumAttr = new SfxItemSet( rDoc.GetAttrPool(), + pEntry->pBoxNumAttr = o3tl::make_unique<SfxItemSet>( rDoc.GetAttrPool(), RES_BOXATR_FORMAT, RES_BOXATR_VALUE, RES_VERT_ORIENT, RES_VERT_ORIENT, 0 ); pEntry->pBoxNumAttr->Put( aTmpSet ); @@ -2676,17 +2665,16 @@ void SwUndoTableCpyTable::AddBoxBefore( const SwTableBox& rBox, bool bDelContent SwPaM aPam( aInsIdx.GetNode(), *rBox.GetSttNd()->EndOfSectionNode() ); if( !pDoc->getIDocumentRedlineAccess().IsRedlineOn() ) - pEntry->pUndo = new SwUndoDelete( aPam, true ); + pEntry->pUndo = o3tl::make_unique<SwUndoDelete>( aPam, true ); } - pEntry->pBoxNumAttr = new SfxItemSet( pDoc->GetAttrPool(), + pEntry->pBoxNumAttr = o3tl::make_unique<SfxItemSet>( pDoc->GetAttrPool(), RES_BOXATR_FORMAT, RES_BOXATR_VALUE, RES_VERT_ORIENT, RES_VERT_ORIENT, 0 ); pEntry->pBoxNumAttr->Put( rBox.GetFrameFormat()->GetAttrSet() ); if( !pEntry->pBoxNumAttr->Count() ) { - delete pEntry->pBoxNumAttr; - pEntry->pBoxNumAttr = nullptr; + pEntry->pBoxNumAttr.reset(); } DEBUG_REDLINE( pDoc ) } @@ -2720,10 +2708,10 @@ void SwUndoTableCpyTable::AddBoxAfter( const SwTableBox& rBox, const SwNodeIndex // been merged. // rJoin is true if Redo() is calling and the content has already been merged -SwUndo* SwUndoTableCpyTable::PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox, +std::unique_ptr<SwUndo> SwUndoTableCpyTable::PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox, const SwPosition& rPos, bool& rJoin, bool bRedo ) { - SwUndo *pUndo = nullptr; + std::unique_ptr<SwUndo> pUndo; // b62341295: Redline for copying tables // What's to do? // Mark the cell content before rIdx as insertion, @@ -2767,7 +2755,7 @@ SwUndo* SwUndoTableCpyTable::PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox if( aDeleteStart != aCellEnd ) { // If the old (deleted) part is not empty, here we are... SwPaM aDeletePam( aDeleteStart, aCellEnd ); - pUndo = new SwUndoRedlineDelete( aDeletePam, SwUndoId::DELETE ); + pUndo = o3tl::make_unique<SwUndoRedlineDelete>( aDeletePam, SwUndoId::DELETE ); pDoc->getIDocumentRedlineAccess().AppendRedline( new SwRangeRedline( nsRedlineType_t::REDLINE_DELETE, aDeletePam ), true ); } else if( !rJoin ) // If the old part is empty and joined, we are finished @@ -2775,7 +2763,7 @@ SwUndo* SwUndoTableCpyTable::PrepareRedline( SwDoc* pDoc, const SwTableBox& rBox aCellEnd = SwPosition( SwNodeIndex( *rBox.GetSttNd()->EndOfSectionNode() )); SwPaM aTmpPam( aDeleteStart, aCellEnd ); - pUndo = new SwUndoDelete( aTmpPam, true ); + pUndo = o3tl::make_unique<SwUndoDelete>( aTmpPam, true ); } SwPosition aCellStart( SwNodeIndex( *rBox.GetSttNd(), 2 ) ); pText = aCellStart.nNode.GetNode().GetTextNode(); |