Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/3358 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/58/3358/1 Convert SfxPtrArray to std::vector in SfxTabDialogItem Also simplify the use-site, we don't need to new it. Change-Id: I310f2027fb777380b8bddb73b169021f5448a6f6 --- M sfx2/source/dialog/tabdlg.cxx 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx index ac88e91..cefa164 100644 --- a/sfx2/source/dialog/tabdlg.cxx +++ b/sfx2/source/dialog/tabdlg.cxx @@ -156,14 +156,14 @@ pDialog->Hide(); } -DECL_PTRARRAY(SfxTabDlgData_Impl, Data_Impl *, 4,4) +typedef std::vector<Data_Impl*> SfxTabDlgData_Impl; struct TabDlg_Impl { - sal_Bool bModified : 1, + sal_Bool bModified : 1, bModal : 1, bHideResetBtn : 1; - SfxTabDlgData_Impl* pData; + SfxTabDlgData_Impl aData; SfxTabDialogController* pController; @@ -172,21 +172,20 @@ bModified ( sal_False ), bModal ( sal_True ), bHideResetBtn ( sal_False ), - pData ( new SfxTabDlgData_Impl( nCnt ) ), pController ( NULL ) - {} + { + aData.reserve( nCnt ); + } ~TabDlg_Impl() { delete pController; - delete pData; } }; -Data_Impl* Find( SfxTabDlgData_Impl& rArr, sal_uInt16 nId, sal_uInt16* pPos = 0 ); -Data_Impl* Find( SfxTabDlgData_Impl& rArr, sal_uInt16 nId, sal_uInt16* pPos ) +static Data_Impl* Find( const SfxTabDlgData_Impl& rArr, sal_uInt16 nId, sal_uInt16* pPos = 0) { - const sal_uInt16 nCount = rArr.Count(); + const sal_uInt16 nCount = rArr.size(); for ( sal_uInt16 i = 0; i < nCount; ++i ) { @@ -511,10 +510,9 @@ { SavePosAndId(); - const sal_uInt16 nCount = pImpl->pData->Count(); - for ( sal_uInt16 i = 0; i < nCount; ++i ) + for ( SfxTabDlgData_Impl::const_iterator it = pImpl->aData.begin(); it != pImpl->aData.end(); ++it ) { - Data_Impl* pDataObject = pImpl->pData->GetObject(i); + Data_Impl* pDataObject = *it; if ( pDataObject->pTabPage ) { @@ -778,7 +776,7 @@ void SfxTabDialog::Start_Impl() { - DBG_ASSERT( pImpl->pData->Count() == m_pTabCtrl->GetPageCount(), "not all pages registered" ); + DBG_ASSERT( pImpl->aData.size() == m_pTabCtrl->GetPageCount(), "not all pages registered" ); sal_uInt16 nActPage = m_pTabCtrl->GetPageId( 0 ); // load old settings, when exists @@ -847,7 +845,7 @@ // requested when created ) { - pImpl->pData->Append( + pImpl->aData.push_back( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); } @@ -867,7 +865,7 @@ ) { sal_uInt16 nId = m_pTabCtrl->GetPageId(rName); - pImpl->pData->Append( + pImpl->aData.push_back( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); return nId; } @@ -888,7 +886,7 @@ assert(pCreateFunc); GetTabPageRanges pRangesFunc = pFact->GetTabPageRangesFunc(nPageCreateId); sal_uInt16 nPageId = m_pTabCtrl->GetPageId(rName); - pImpl->pData->Append(new Data_Impl(nPageId, pCreateFunc, pRangesFunc, false)); + pImpl->aData.push_back(new Data_Impl(nPageId, pCreateFunc, pRangesFunc, false)); return nPageId; } @@ -914,7 +912,7 @@ DBG_ASSERT( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nId ), "Double Page-Ids in the Tabpage" ); m_pTabCtrl->InsertPage( nId, rRiderText, nPos ); - pImpl->pData->Append( + pImpl->aData.push_back( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); } @@ -941,7 +939,7 @@ DBG_ASSERT( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nId ), "Duplicate Page-Ids in the Tabpage" ); m_pTabCtrl->InsertPage( nId, rRiderBitmap, nPos ); - pImpl->pData->Append( + pImpl->aData.push_back( new Data_Impl( nId, pCreateFunc, pRangesFunc, bItemsOnDemand ) ); } #endif @@ -958,7 +956,7 @@ { sal_uInt16 nPos = 0; m_pTabCtrl->RemovePage( nId ); - Data_Impl* pDataObject = Find( *pImpl->pData, nId, &nPos ); + Data_Impl* pDataObject = Find( pImpl->aData, nId, &nPos ); if ( pDataObject ) { @@ -979,7 +977,7 @@ } delete pDataObject; - pImpl->pData->Remove( nPos ); + pImpl->aData.erase( pImpl->aData.begin() + nPos ); } else { @@ -1035,7 +1033,7 @@ { sal_uInt16 nPos = 0; - Data_Impl* pDataObject = Find( *pImpl->pData, nPageId, &nPos ); + Data_Impl* pDataObject = Find( pImpl->aData, nPageId, &nPos ); if ( pDataObject ) return pDataObject->pTabPage; @@ -1083,11 +1081,9 @@ } sal_Bool bModified = sal_False; - const sal_uInt16 nCount = pImpl->pData->Count(); - - for ( sal_uInt16 i = 0; i < nCount; ++i ) + for ( SfxTabDlgData_Impl::const_iterator it = pImpl->aData.begin(); it != pImpl->aData.end(); ++it ) { - Data_Impl* pDataObject = pImpl->pData->GetObject(i); + Data_Impl* pDataObject = *it; SfxTabPage* pTabPage = pDataObject->pTabPage; if ( pTabPage ) @@ -1268,7 +1264,7 @@ { const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); - Data_Impl* pDataObject = Find( *pImpl->pData, nId ); + Data_Impl* pDataObject = Find( pImpl->aData, nId ); DBG_ASSERT( pDataObject, "Id not known" ); if ( pDataObject->bOnDemand ) @@ -1295,7 +1291,7 @@ { const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); - Data_Impl* pDataObject = Find( *pImpl->pData, nId ); + Data_Impl* pDataObject = Find( pImpl->aData, nId ); DBG_ASSERT( pDataObject, "Id not known" ); bFmt = 2; @@ -1375,12 +1371,12 @@ { sal_uInt16 const nId = pTabCtrl->GetCurPageId(); - DBG_ASSERT( pImpl->pData->Count(), "no Pages registered" ); + DBG_ASSERT( pImpl->aData.size(), "no Pages registered" ); SFX_APP(); // Tab Page schon da? SfxTabPage* pTabPage = dynamic_cast<SfxTabPage*> (pTabCtrl->GetTabPage( nId )); - Data_Impl* pDataObject = Find( *pImpl->pData, nId ); + Data_Impl* pDataObject = Find( pImpl->aData, nId ); DBG_ASSERT( pDataObject, "Id not known" ); // Create TabPage if possible: @@ -1461,7 +1457,7 @@ SfxTabPage *pPage = dynamic_cast<SfxTabPage*> (pTabCtrl->GetTabPage( nId )); DBG_ASSERT( pPage, "no active Page" ); #ifdef DBG_UTIL - Data_Impl* pDataObject = Find( *pImpl->pData, pTabCtrl->GetCurPageId() ); + Data_Impl* pDataObject = Find( pImpl->aData, pTabCtrl->GetCurPageId() ); DBG_ASSERT( pDataObject, "no Data structur for current page" ); if ( pPage->HasExchangeSupport() && pDataObject->bOnDemand ) { @@ -1510,11 +1506,10 @@ pSet = GetRefreshedSet(); DBG_ASSERT( pSet, "GetRefreshedSet() returns NULL" ); // Flag all Pages as to be initialized as new - const sal_uInt16 nCount = pImpl->pData->Count(); - for ( sal_uInt16 i = 0; i < nCount; ++i ) + for ( SfxTabDlgData_Impl::const_iterator it = pImpl->aData.begin(); it != pImpl->aData.end(); ++it ) { - Data_Impl* pObj = (*pImpl->pData)[i]; + Data_Impl* pObj = *it; if ( pObj->pTabPage != pPage ) // Do not refresh own Page anymore pObj->bRefresh = sal_True; @@ -1574,12 +1569,10 @@ if ( pRanges ) return pRanges; std::vector<sal_uInt16> aUS; - sal_uInt16 nCount = pImpl->pData->Count(); - sal_uInt16 i; - for ( i = 0; i < nCount; ++i ) + for ( SfxTabDlgData_Impl::const_iterator it = pImpl->aData.begin(); it != pImpl->aData.end(); ++it ) { - Data_Impl* pDataObject = pImpl->pData->GetObject(i); + Data_Impl* pDataObject = *it; if ( pDataObject->fnGetRanges ) { @@ -1595,9 +1588,8 @@ //! Remove duplicated Ids? { - nCount = aUS.size(); - - for ( i = 0; i < nCount; ++i ) + sal_uInt16 nCount = aUS.size(); + for ( sal_uInt16 i = 0; i < nCount; ++i ) aUS[i] = rPool.GetWhich( aUS[i] ); } -- To view, visit https://gerrit.libreoffice.org/3358 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I310f2027fb777380b8bddb73b169021f5448a6f6 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: master Gerrit-Owner: Noel Grandin <noelgran...@gmail.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice