sw/inc/edglbldc.hxx | 5 +---- sw/source/core/edit/edglbldc.cxx | 27 +++++++++++---------------- sw/source/uibase/utlui/glbltree.cxx | 21 +++++++++------------ 3 files changed, 21 insertions(+), 32 deletions(-)
New commits: commit 97c934d96be62f906c48561673866399f6469446 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Tue Sep 18 14:32:11 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Sep 20 08:15:22 2018 +0200 convert SwGlblDocContents to sorted_vector<unique_ptr<>> Change-Id: I9766a03739aa63be8f42fc99012577cfa154298d Reviewed-on: https://gerrit.libreoffice.org/60738 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/inc/edglbldc.hxx b/sw/inc/edglbldc.hxx index 2dabd5165643..ee246d006c73 100644 --- a/sw/inc/edglbldc.hxx +++ b/sw/inc/edglbldc.hxx @@ -60,10 +60,7 @@ public: { return GetDocPos() < rCmp.GetDocPos(); } }; -class SwGlblDocContents : public o3tl::sorted_vector<SwGlblDocContent*, o3tl::less_ptr_to<SwGlblDocContent> > { -public: - ~SwGlblDocContents() { DeleteAndDestroyAll(); } -}; +class SwGlblDocContents : public o3tl::sorted_vector<std::unique_ptr<SwGlblDocContent>, o3tl::less_uniqueptr_to<SwGlblDocContent> > {}; #endif diff --git a/sw/source/core/edit/edglbldc.cxx b/sw/source/core/edit/edglbldc.cxx index e2f4dd71f7bf..fc7d8b241b89 100644 --- a/sw/source/core/edit/edglbldc.cxx +++ b/sw/source/core/edit/edglbldc.cxx @@ -53,7 +53,7 @@ bool SwEditShell::IsGlblDocSaveLinks() const void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const { - rArr.DeleteAndDestroyAll(); + rArr.clear(); if( !getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT) ) return; @@ -67,22 +67,21 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const const SwSection* pSect = rSectFormats[ --n ]->GetGlobalDocSection(); if( pSect ) { - SwGlblDocContent* pNew = nullptr; + std::unique_ptr<SwGlblDocContent> pNew; switch( pSect->GetType() ) { case TOX_HEADER_SECTION: break; // ignore case TOX_CONTENT_SECTION: OSL_ENSURE( dynamic_cast<const SwTOXBaseSection*>( pSect) != nullptr, "no TOXBaseSection!" ); - pNew = new SwGlblDocContent( static_cast<const SwTOXBaseSection*>(pSect) ); + pNew.reset(new SwGlblDocContent( static_cast<const SwTOXBaseSection*>(pSect) )); break; default: - pNew = new SwGlblDocContent( pSect ); + pNew.reset(new SwGlblDocContent( pSect )); break; } - if( pNew && !rArr.insert( pNew ).second ) - delete pNew; + rArr.insert( std::move(pNew) ); } } @@ -98,10 +97,8 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const if( ( pNd = pMyDoc->GetNodes()[ nSttIdx ])->IsContentNode() || pNd->IsSectionNode() || pNd->IsTableNode() ) { - SwGlblDocContent* pNew = new SwGlblDocContent( nSttIdx ); - if( !rArr.insert( pNew ).second ) - delete pNew; - else + std::unique_ptr<SwGlblDocContent> pNew(new SwGlblDocContent( nSttIdx )); + if( rArr.insert( std::move(pNew) ).second ) ++n; // to the next position break; } @@ -119,17 +116,15 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const if( ( pNd = pMyDoc->GetNodes()[ nSttIdx ])->IsContentNode() || pNd->IsSectionNode() || pNd->IsTableNode() ) { - SwGlblDocContent* pNew = new SwGlblDocContent( nSttIdx ); - if( !rArr.insert( pNew ).second ) - delete pNew; + rArr.insert( o3tl::make_unique<SwGlblDocContent>( nSttIdx ) ); break; } } else { - SwGlblDocContent* pNew = new SwGlblDocContent( - pMyDoc->GetNodes().GetEndOfExtras().GetIndex() + 2 ); - rArr.insert( pNew ); + std::unique_ptr<SwGlblDocContent> pNew(new SwGlblDocContent( + pMyDoc->GetNodes().GetEndOfExtras().GetIndex() + 2 )); + rArr.insert( std::move(pNew) ); } } diff --git a/sw/source/uibase/utlui/glbltree.cxx b/sw/source/uibase/utlui/glbltree.cxx index 13cc616041fe..737fd2f1b1e2 100644 --- a/sw/source/uibase/utlui/glbltree.cxx +++ b/sw/source/uibase/utlui/glbltree.cxx @@ -270,7 +270,7 @@ sal_Int8 SwGlobalTree::ExecuteDrop( const ExecuteDropEvent& rEvt ) { nEntryCount++; nAbsContPos++; - pCnt = (*pTempContents)[ nAbsContPos ]; + pCnt = (*pTempContents)[ nAbsContPos ].get(); } } } @@ -659,7 +659,7 @@ void SwGlobalTree::Display(bool bOnlyUpdateUserData) SvTreeListEntry* pEntry = First(); for (size_t i = 0; i < nCount && pEntry; i++) { - SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i]; + SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i].get(); pEntry->SetUserData(pCont); pEntry = Next(pEntry); assert(pEntry || i == nCount - 1); @@ -683,7 +683,7 @@ void SwGlobalTree::Display(bool bOnlyUpdateUserData) SvTreeListEntry* pSelEntry = nullptr; for( size_t i = 0; i < nCount; i++) { - SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i]; + SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i].get(); OUString sEntry; Image aImage; switch( pCont->GetType() ) @@ -1130,8 +1130,8 @@ bool SwGlobalTree::Update(bool bHard) { for(size_t i = 0; i < pTempContents->size() && !bCopy; i++) { - SwGlblDocContent* pLeft = (*pTempContents)[i]; - SwGlblDocContent* pRight = (*m_pSwGlblDocContents)[i]; + SwGlblDocContent* pLeft = (*pTempContents)[i].get(); + SwGlblDocContent* pRight = (*m_pSwGlblDocContents)[i].get(); GlobalDocContentType eType = pLeft->GetType(); SvTreeListEntry* pEntry = GetEntry(i); OUString sTemp = GetEntryText(pEntry); @@ -1153,10 +1153,7 @@ bool SwGlobalTree::Update(bool bHard) } if(bCopy || bHard) { - m_pSwGlblDocContents->DeleteAndDestroyAll(); - m_pSwGlblDocContents->insert( *pTempContents ); - pTempContents->clear(); - + *m_pSwGlblDocContents = std::move( *pTempContents ); } } @@ -1165,7 +1162,7 @@ bool SwGlobalTree::Update(bool bHard) { Clear(); if(m_pSwGlblDocContents) - m_pSwGlblDocContents->DeleteAndDestroyAll(); + m_pSwGlblDocContents->clear(); } // FIXME: Implement a test for changes! return bRet; @@ -1308,9 +1305,9 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen SwGlblDocContent* pAnchorContent = nullptr; OSL_ENSURE(aTempContents.size() > (nAnchorContent + nFile), "invalid anchor content -> last insertion failed"); if ( aTempContents.size() > (nAnchorContent + nFile) ) - pAnchorContent = aTempContents[nAnchorContent + nFile]; + pAnchorContent = aTempContents[nAnchorContent + nFile].get(); else - pAnchorContent = aTempContents.back(); + pAnchorContent = aTempContents.back().get(); OUString sFileName(pFileNames[nFile]); INetURLObject aFileUrl; aFileUrl.SetSmartURL( sFileName ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits