summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorArkadiy Illarionov <qarkai@gmail.com>2019-01-11 01:40:49 +0300
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-01-15 07:05:18 +0100
commit739a3243944d533d94d244d1464c0b8ec49e214c (patch)
tree4ae9f950f798a4aee9edee10e4b8c2099f75c3a9 /sc
parent7883a5d1640f007ab05817540164043aa098b0dd (diff)
Simplify containers iterations in sc/source/ui/docshell
Use range-based loop or replace with STL functions Change-Id: I7ab254241ff5b9637ac28282ad0868b3c55a1fb3 Reviewed-on: https://gerrit.libreoffice.org/66135 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/docshell/autostyl.cxx23
-rw-r--r--sc/source/ui/docshell/datastream.cxx5
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx16
-rw-r--r--sc/source/ui/docshell/docfunc.cxx367
-rw-r--r--sc/source/ui/docshell/docfuncutil.cxx22
-rw-r--r--sc/source/ui/docshell/docsh.cxx4
-rw-r--r--sc/source/ui/docshell/docsh4.cxx5
-rw-r--r--sc/source/ui/docshell/documentlinkmgr.cxx4
-rw-r--r--sc/source/ui/docshell/editable.cxx14
-rw-r--r--sc/source/ui/docshell/externalrefmgr.cxx220
-rw-r--r--sc/source/ui/docshell/macromgr.cxx9
11 files changed, 334 insertions, 355 deletions
diff --git a/sc/source/ui/docshell/autostyl.cxx b/sc/source/ui/docshell/autostyl.cxx
index d7db2e4a7d5a..41458d241159 100644
--- a/sc/source/ui/docshell/autostyl.cxx
+++ b/sc/source/ui/docshell/autostyl.cxx
@@ -83,15 +83,14 @@ void ScAutoStyleList::AddInitial( const ScRange& rRange, const OUString& rStyle1
IMPL_LINK_NOARG(ScAutoStyleList, InitHdl, Timer *, void)
{
- std::vector<ScAutoStyleInitData>::iterator iter;
- for (iter = aInitials.begin(); iter != aInitials.end(); ++iter)
+ for (const auto& rInitial : aInitials)
{
// apply first style immediately
- pDocSh->DoAutoStyle(iter->aRange,iter->aStyle1);
+ pDocSh->DoAutoStyle(rInitial.aRange, rInitial.aStyle1);
// add second style to list
- if (iter->nTimeout)
- AddEntry(iter->nTimeout,iter->aRange,iter->aStyle2 );
+ if (rInitial.nTimeout)
+ AddEntry(rInitial.nTimeout, rInitial.aRange, rInitial.aStyle2 );
}
aInitials.clear();
@@ -131,13 +130,12 @@ void ScAutoStyleList::AddEntry( sal_uLong nTimeout, const ScRange& rRange, const
void ScAutoStyleList::AdjustEntries( sal_uLong nDiff ) // milliseconds
{
- std::vector<ScAutoStyleData>::iterator iter;
- for (iter = aEntries.begin(); iter != aEntries.end(); ++iter)
+ for (auto& rEntry : aEntries)
{
- if (iter->nTimeout <= nDiff)
- iter->nTimeout = 0; // expired
+ if (rEntry.nTimeout <= nDiff)
+ rEntry.nTimeout = 0; // expired
else
- iter->nTimeout -= nDiff; // continue counting
+ rEntry.nTimeout -= nDiff; // continue counting
}
}
@@ -162,9 +160,8 @@ void ScAutoStyleList::ExecuteAllNow()
{
aTimer.Stop();
- std::vector<ScAutoStyleData>::iterator iter;
- for (iter = aEntries.begin(); iter != aEntries.end(); ++iter)
- pDocSh->DoAutoStyle(iter->aRange,iter->aStyle);
+ for (const auto& rEntry : aEntries)
+ pDocSh->DoAutoStyle(rEntry.aRange, rEntry.aStyle);
aEntries.clear();
}
diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx
index bbbed185ef35..4e3c700c73f1 100644
--- a/sc/source/ui/docshell/datastream.cxx
+++ b/sc/source/ui/docshell/datastream.cxx
@@ -477,12 +477,10 @@ void DataStream::Text2Doc()
MoveData();
{
- std::vector<Cell>::const_iterator it = aLine.maCells.begin(), itEnd = aLine.maCells.end();
SCCOL nCol = maStartRange.aStart.Col();
const char* pLineHead = aLine.maLine.getStr();
- for (; it != itEnd; ++it, ++nCol)
+ for (const Cell& rCell : aLine.maCells)
{
- const Cell& rCell = *it;
if (rCell.mbValue)
{
maDocAccess.setNumericCell(
@@ -494,6 +492,7 @@ void DataStream::Text2Doc()
ScAddress(nCol, mnCurRow, maStartRange.aStart.Tab()),
OUString(pLineHead+rCell.maStr.Pos, rCell.maStr.Size, RTL_TEXTENCODING_UTF8));
}
+ ++nCol;
}
}
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index aec29c4434e8..8a7896a71024 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -251,12 +251,11 @@ void ScDBDocFunc::ModifyAllDBData( const ScDBCollection& rNewColl, const std::ve
std::unique_ptr<ScDBCollection> pUndoColl;
bool bRecord = rDoc.IsUndoEnabled();
- std::vector<ScRange>::const_iterator iter;
- for (iter = rDelAreaList.begin(); iter != rDelAreaList.end(); ++iter)
+ for (const auto& rDelArea : rDelAreaList)
{
// unregistering target in SBA no longer necessary
- const ScAddress& rStart = iter->aStart;
- const ScAddress& rEnd = iter->aEnd;
+ const ScAddress& rStart = rDelArea.aStart;
+ const ScAddress& rEnd = rDelArea.aEnd;
rDocShell.DBAreaDeleted(
rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col());
}
@@ -1626,11 +1625,8 @@ void ScDBDocFunc::RefreshPivotTables(const ScDPObject* pDPObj, bool bApi)
if (pErrId)
return;
- std::set<ScDPObject*>::iterator it = aRefs.begin(), itEnd = aRefs.end();
- for (; it != itEnd; ++it)
+ for (ScDPObject* pObj : aRefs)
{
- ScDPObject* pObj = *it;
-
// This action is intentionally not undoable since it modifies cache.
UpdatePivotTable(*pObj, false, bApi);
}
@@ -1663,10 +1659,8 @@ void ScDBDocFunc::RefreshPivotTableGroups(ScDPObject* pDPObj)
// We allow pDimData being NULL.
const ScDPDimensionSaveData* pDimData = pSaveData->GetExistingDimensionData();
- std::set<ScDPObject*>::iterator it = aRefs.begin(), itEnd = aRefs.end();
- for (; it != itEnd; ++it)
+ for (ScDPObject* pObj : aRefs)
{
- ScDPObject* pObj = *it;
if (pObj != pDPObj)
{
pSaveData = pObj->GetSaveData();
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index bfea212bd7cc..8f8d642190e5 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -737,10 +737,14 @@ bool ScDocFunc::TransliterateText( const ScMarkData& rMark, TransliterationFlags
ScDocumentUniquePtr pUndoDoc(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : rMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
ScRange aCopyRange = aMarkRange;
aCopyRange.aStart.SetTab(0);
@@ -1099,11 +1103,9 @@ void ScDocFunc::PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine,
bRet = SetEditCell(rPos, *pNewData, !bApi);
// Set the paragraph attributes back to the EditEngine.
- ScMyRememberItemVector::iterator aItr = aRememberItems.begin();
- while (aItr != aRememberItems.end())
+ for (const auto& rxItem : aRememberItems)
{
- rEngine.SetParaAttribs((*aItr)->nIndex, (*aItr)->aItemSet);
- ++aItr;
+ rEngine.SetParaAttribs(rxItem->nIndex, rxItem->aItemSet);
}
// #i61702# if the content isn't accessed, there's no need to set the UpdateMode again
@@ -1415,10 +1417,14 @@ bool ScDocFunc::ApplyStyle( const ScMarkData& rMark, const OUString& rStyleName,
SCTAB nStartTab = aMultiRange.aStart.Tab();
SCTAB nTabCount = rDoc.GetTableCount();
pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : rMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
ScRange aCopyRange = aMultiRange;
aCopyRange.aStart.SetTab(0);
@@ -1457,7 +1463,6 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
return true;
const ScDPCollection* pDPs = pDoc->GetDPCollection();
- ScMarkData::const_iterator itBeg = rMarkData.begin(), itEnd = rMarkData.end();
ScRange aRange(rRange); // local copy
switch (eCmd)
@@ -1470,12 +1475,11 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
}
case INS_CELLSDOWN:
{
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
- {
- if (pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), *it))
- // This column range cuts through at least one pivot table. Not good.
- return false;
- }
+ auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+ return pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), rTab); });
+ if (bIntersects)
+ // This column range cuts through at least one pivot table. Not good.
+ return false;
// Start row must be either at the top or above any pivot tables.
if (aRange.aStart.Row() < 0)
@@ -1489,10 +1493,10 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
ScRange aTest(aRange);
aTest.aStart.IncRow(-1); // Test one row up.
aTest.aEnd.SetRow(aTest.aStart.Row());
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+ for (const auto& rTab : rMarkData)
{
- aTest.aStart.SetTab(*it);
- aTest.aEnd.SetTab(*it);
+ aTest.aStart.SetTab(rTab);
+ aTest.aEnd.SetTab(rTab);
if (pDPs->HasTable(aTest))
return false;
}
@@ -1506,12 +1510,11 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
}
case INS_CELLSRIGHT:
{
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
- {
- if (pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), *it))
- // This column range cuts through at least one pivot table. Not good.
- return false;
- }
+ auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+ return pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), rTab); });
+ if (bIntersects)
+ // This column range cuts through at least one pivot table. Not good.
+ return false;
// Start row must be either at the top or above any pivot tables.
if (aRange.aStart.Col() < 0)
@@ -1525,10 +1528,10 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
ScRange aTest(aRange);
aTest.aStart.IncCol(-1); // Test one column to the left.
aTest.aEnd.SetCol(aTest.aStart.Col());
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+ for (const auto& rTab : rMarkData)
{
- aTest.aStart.SetTab(*it);
- aTest.aEnd.SetTab(*it);
+ aTest.aStart.SetTab(rTab);
+ aTest.aEnd.SetTab(rTab);
if (pDPs->HasTable(aTest))
return false;
}
@@ -1554,7 +1557,6 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
return true;
const ScDPCollection* pDPs = pDoc->GetDPCollection();
- ScMarkData::const_iterator itBeg = rMarkData.begin(), itEnd = rMarkData.end();
ScRange aRange(rRange); // local copy
@@ -1568,18 +1570,17 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
}
case DelCellCmd::CellsUp:
{
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
- {
- if (pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), *it))
- // This column range cuts through at least one pivot table. Not good.
- return false;
- }
+ auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+ return pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), rTab); });
+ if (bIntersects)
+ // This column range cuts through at least one pivot table. Not good.
+ return false;
ScRange aTest(aRange);
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+ for (const auto& rTab : rMarkData)
{
- aTest.aStart.SetTab(*it);
- aTest.aEnd.SetTab(*it);
+ aTest.aStart.SetTab(rTab);
+ aTest.aEnd.SetTab(rTab);
if (pDPs->HasTable(aTest))
return false;
}
@@ -1593,18 +1594,17 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
}
case DelCellCmd::CellsLeft:
{
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
- {
- if (pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), *it))
- // This column range cuts through at least one pivot table. Not good.
- return false;
- }
+ auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+ return pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), rTab); });
+ if (bIntersects)
+ // This column range cuts through at least one pivot table. Not good.
+ return false;
ScRange aTest(aRange);
- for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+ for (const auto& rTab : rMarkData)
{
- aTest.aStart.SetTab(*it);
- aTest.aEnd.SetTab(*it);
+ aTest.aStart.SetTab(rTab);
+ aTest.aEnd.SetTab(rTab);
if (pDPs->HasTable(aTest))
return false;
}
@@ -1675,7 +1675,6 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
SCROW nPaintEndRow = nEndRow;
PaintPartFlags nPaintFlags = PaintPartFlags::Grid;
bool bSuccess;
- SCTAB i;
ScTabViewShell* pViewSh = rDocShell.GetBestViewShell(); //preserve current cursor position
SCCOL nCursorCol = 0;
@@ -1695,7 +1694,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
else
{
SCTAB nCount = 0;
- for( i=0; i<nTabCount; i++ )
+ for( SCTAB i=0; i<nTabCount; i++ )
{
if( !rDoc.IsScenario(i) )
{
@@ -1710,10 +1709,14 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
}
ScMarkData aFullMark( aMark ); // including scenario sheets
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
aFullMark.SelectTable( j, true );
+ }
SCTAB nSelCount = aMark.GetSelectCount();
@@ -1826,10 +1829,11 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
}
std::unique_ptr<ScUndoRemoveMerge> pUndoRemoveMerge;
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const SCTAB i : aMark)
{
- i = *itr;
+ if (i >= nTabCount)
+ break;
+
if( rDoc.HasAttrib( nMergeTestStartCol, nMergeTestStartRow, i, nMergeTestEndCol, nMergeTestEndRow, i, HasAttrFlags::Merged | HasAttrFlags::Overlapped ) )
{
if (eCmd==INS_CELLSRIGHT)
@@ -1937,9 +1941,8 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
pUndoRemoveMerge.reset( new ScUndoRemoveMerge( &rDocShell, rRange, std::move(pUndoDoc) ));
}
- for( ::std::vector<ScRange>::const_iterator iIter( qIncreaseRange.begin()); iIter != qIncreaseRange.end(); ++iIter )
+ for( const ScRange& aRange : qIncreaseRange )
{
- ScRange aRange( *iIter );
if( rDoc.HasAttrib( aRange, HasAttrFlags::Overlapped | HasAttrFlags::Merged ) )
{
UnmergeCells( aRange, bRecord, pUndoRemoveMerge.get() );
@@ -2003,15 +2006,17 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
std::unique_ptr<SCTAB[]> pTabs(new SCTAB[nSelCount]);
std::unique_ptr<SCTAB[]> pScenarios(new SCTAB[nSelCount]);
nUndoPos = 0;
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
+ if (rTab >= nTabCount)
+ break;
+
SCTAB nCount = 0;
- for( SCTAB j=*itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for( SCTAB j=rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
nCount ++;
pScenarios[nUndoPos] = nCount;
- pTabs[nUndoPos] = *itr;
+ pTabs[nUndoPos] = rTab;
nUndoPos ++;
}
@@ -2059,10 +2064,11 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
if( bInsertMerge )
rDocShell.GetUndoManager()->LeaveListAction();
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const SCTAB i : aMark)
{
- i = *itr;
+ if (i >= nTabCount)
+ break;
+
rDoc.SetDrawPageSize(i);
if (bNeedRefresh)
@@ -2208,10 +2214,14 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
}
ScMarkData aFullMark( aMark ); // including scenario sheets
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
aFullMark.SelectTable( j, true );
+ }
SCTAB nSelCount = aMark.GetSelectCount();
@@ -2303,10 +2313,11 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
}
std::unique_ptr<ScUndoRemoveMerge> pUndoRemoveMerge;
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const SCTAB i : aMark)
{
- SCTAB i = *itr;
+ if (i >= nTabCount)
+ break;
+
if ( rDoc.HasAttrib( nUndoStartCol, nUndoStartRow, i, nMergeTestEndCol, nMergeTestEndRow, i, HasAttrFlags::Merged | HasAttrFlags::Overlapped ))
{
SCCOL nMergeStartCol = nUndoStartCol;
@@ -2417,9 +2428,8 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
pUndoRemoveMerge.reset( new ScUndoRemoveMerge( &rDocShell, rRange, std::move(pUndoDoc) ));
}
- for( ::std::vector<ScRange>::const_iterator iIter( qDecreaseRange.begin()); iIter != qDecreaseRange.end(); ++iIter )
+ for( const ScRange& aRange : qDecreaseRange )
{
- ScRange aRange( *iIter );
if( rDoc.HasAttrib( aRange, HasAttrFlags::Overlapped | HasAttrFlags::Merged ) )
{
UnmergeCells( aRange, bRecord, pUndoRemoveMerge.get() );
@@ -2456,15 +2466,17 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, 0, nTabCount-1, (eCmd==DelCellCmd::Cols), (eCmd==DelCellCmd::Rows) );
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
+ if (rTab >= nTabCount)
+ break;
+
SCTAB nScenarioCount = 0;
- for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
nScenarioCount ++;
- rDoc.CopyToDocument( nUndoStartCol, nUndoStartRow, *itr, nUndoEndCol, nUndoEndRow, *itr+nScenarioCount,
+ rDoc.CopyToDocument( nUndoStartCol, nUndoStartRow, rTab, nUndoEndCol, nUndoEndRow, rTab+nScenarioCount,
InsertDeleteFlags::ALL | InsertDeleteFlags::NOCAPTIONS, false, *pUndoDoc );
}
@@ -2477,10 +2489,12 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
}
sal_uInt16 nExtFlags = 0;
- itr = aMark.begin();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
- rDocShell.UpdatePaintExt( nExtFlags, nStartCol, nStartRow, *itr, nEndCol, nEndRow, *itr );
+ if (rTab >= nTabCount)
+ break;
+
+ rDocShell.UpdatePaintExt( nExtFlags, nStartCol, nStartRow, rTab, nEndCol, nEndRow, rTab );
}
bool bUndoOutline = false;
@@ -2517,10 +2531,13 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
if ( bRecord )
{
- itr = aFullMark.begin();
- itrEnd = aFullMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- pRefUndoDoc->DeleteAreaTab(nUndoStartCol,nUndoStartRow,nUndoEndCol,nUndoEndRow, *itr, InsertDeleteFlags::ALL);
+ for (const auto& rTab : aFullMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ pRefUndoDoc->DeleteAreaTab(nUndoStartCol,nUndoStartRow,nUndoEndCol,nUndoEndRow, rTab, InsertDeleteFlags::ALL);
+ }
// for all sheets, so that formulas can be copied
pUndoDoc->AddUndoTab( 0, nTabCount-1 );
@@ -2533,16 +2550,17 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
std::unique_ptr<SCTAB[]> pScenarios( new SCTAB[nSelCount]);
SCTAB nUndoPos = 0;
- itr = aMark.begin();
- itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
+ if (rTab >= nTabCount)
+ break;
+
SCTAB nCount = 0;
- for( SCTAB j=*itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for( SCTAB j=rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
nCount ++;
pScenarios[nUndoPos] = nCount;
- pTabs[nUndoPos] = *itr;
+ pTabs[nUndoPos] = rTab;
nUndoPos ++;
}
@@ -2624,53 +2642,56 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
rDoc.ApplyPatternArea( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, aMark, aPattern );
- itr = aMark.begin();
- itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
+ if (rTab >= nTabCount)
+ break;
+
SCTAB nScenarioCount = 0;
- for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
nScenarioCount ++;
- ScRange aMergedRange( nExtendStartCol, nExtendStartRow, *itr, nMergeTestEndCol, nMergeTestEndRow, *itr+nScenarioCount );
+ ScRange aMergedRange( nExtendStartCol, nExtendStartRow, rTab, nMergeTestEndCol, nMergeTestEndRow, rTab+nScenarioCount );
rDoc.ExtendMerge( aMergedRange, true );
}
}
- itr = aMark.begin();
- itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
- rDoc.RefreshAutoFilter( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, *itr );
+ if (rTab >= nTabCount)
+ break;
+
+ rDoc.RefreshAutoFilter( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, rTab );
}
- itr = aMark.begin();
- itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
- rDoc.SetDrawPageSize(*itr);
+ if (rTab >= nTabCount)
+ break;
+
+ rDoc.SetDrawPageSize(rTab);
if ( eCmd == DelCellCmd::Cols || eCmd == DelCellCmd::Rows )
- rDoc.UpdatePageBreaks( *itr );
+ rDoc.UpdatePageBreaks( rTab );
- rDocShell.UpdatePaintExt( nExtFlags, nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr );
+ rDocShell.UpdatePaintExt( nExtFlags, nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab );
SCTAB nScenarioCount = 0;
- for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+ for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
nScenarioCount ++;
// delete entire rows: do not adjust
- if ( eCmd == DelCellCmd::Rows || !AdjustRowHeight(ScRange( 0, nPaintStartRow, *itr, MAXCOL, nPaintEndRow, *itr+nScenarioCount )) )
- rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount, nPaintFlags, nExtFlags );
+ if ( eCmd == DelCellCmd::Rows || !AdjustRowHeight(ScRange( 0, nPaintStartRow, rTab, MAXCOL, nPaintEndRow, rTab+nScenarioCount )) )
+ rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount, nPaintFlags, nExtFlags );
else
{
// paint only what is not done by AdjustRowHeight
if (nExtFlags & SC_PF_LINES)
- lcl_PaintAbove( rDocShell, ScRange( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount) );
+ lcl_PaintAbove( rDocShell, ScRange( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount) );
if (nPaintFlags & PaintPartFlags::Top)
- rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount, PaintPartFlags::Top );
+ rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount, PaintPartFlags::Top );
}
}
@@ -4020,10 +4041,14 @@ bool ScDocFunc::ChangeIndent( const ScMarkData& rMark, bool bIncrement, bool bAp
ScDocumentUniquePtr pUndoDoc(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : rMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
ScRange aCopyRange = aMarkRange;
aCopyRange.aStart.SetTab(0);
@@ -4101,10 +4126,14 @@ bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
{
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab, bSize, bSize );
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr, bSize, bSize );
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab, bSize, bSize );
+ }
ScRange aCopyRange = rRange;
aCopyRange.aStart.SetTab(0);
@@ -4127,28 +4156,32 @@ bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
std::vector<sc::ColRowSpan> aCols(1, sc::ColRowSpan(nStartCol,nEndCol));
std::vector<sc::ColRowSpan> aRows(1, sc::ColRowSpan(nStartRow,nEndRow));
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
- SetWidthOrHeight(true, aCols, *itr, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, false, true);
- SetWidthOrHeight(false, aRows, *itr, SC_SIZE_VISOPT, 0, false, false);
- rDocShell.PostPaint( 0,0,*itr, MAXCOL,MAXROW,*itr,
+ if (rTab >= nTabCount)
+ break;
+
+ SetWidthOrHeight(true, aCols, rTab, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, false, true);
+ SetWidthOrHeight(false, aRows, rTab, SC_SIZE_VISOPT, 0, false, false);
+ rDocShell.PostPaint( 0,0,rTab, MAXCOL,MAXROW,rTab,
PaintPartFlags::Grid | PaintPartFlags::Left | PaintPartFlags::Top );
}
}
else
{
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
+ for (const auto& rTab : aMark)
{
- bool bAdj = AdjustRowHeight( ScRange(nStartCol, nStartRow, *itr,
- nEndCol, nEndRow, *itr), false );
+ if (rTab >= nTabCount)
+ break;
+
+ bool bAdj = AdjustRowHeight( ScRange(nStartCol, nStartRow, rTab,
+ nEndCol, nEndRow, rTab), false );
if (bAdj)
- rDocShell.PostPaint( 0,nStartRow,*itr, MAXCOL,MAXROW,*itr,
+ rDocShell.PostPaint( 0,nStartRow,rTab, MAXCOL,MAXROW,rTab,
PaintPartFlags::Grid | PaintPartFlags::Left );
else
- rDocShell.PostPaint( nStartCol, nStartRow, *itr,
- nEndCol, nEndRow, *itr, PaintPartFlags::Grid );
+ rDocShell.PostPaint( nStartCol, nStartRow, rTab,
+ nEndCol, nEndRow, rTab, PaintPartFlags::Grid );
}
}
@@ -4461,10 +4494,14 @@ bool ScDocFunc::FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nDestStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nDestStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
ScRange aCopyRange = aDestArea;
aCopyRange.aStart.SetTab(0);
@@ -4577,10 +4614,14 @@ bool ScDocFunc::FillSeries( const ScRange& rRange, const ScMarkData* pTabMark,
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nDestStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nDestStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
rDoc.CopyToDocument(
aDestArea.aStart.Col(), aDestArea.aStart.Row(), 0,
@@ -4729,10 +4770,14 @@ bool ScDocFunc::FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir e
pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
- ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (*itr != nDestStartTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : aMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rTab != nDestStartTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
+ }
// do not clone note captions in undo document
rDoc.CopyToDocument(
@@ -4787,15 +4832,14 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
}
ScDocument& rDoc = rDocShell.GetDocument();
- set<SCTAB>::const_iterator itrBeg = rOption.maTabs.begin(), itrEnd = rOption.maTabs.end();
- SCTAB nTab1 = *itrBeg, nTab2 = *rOption.maTabs.rbegin();
+ SCTAB nTab1 = *rOption.maTabs.begin(), nTab2 = *rOption.maTabs.rbegin();
if (bRecord && !rDoc.IsUndoEnabled())
bRecord = false;
- for (set<SCTAB>::const_iterator itr = itrBeg; itr != itrEnd; ++itr)
+ for (const auto& rTab : rOption.maTabs)
{
- ScEditableTester aTester( &rDoc, *itr, nStartCol, nStartRow, nEndCol, nEndRow );
+ ScEditableTester aTester( &rDoc, rTab, nStartCol, nStartRow, nEndCol, nEndRow );
if (!aTester.IsEditable())
{
if (!bApi)
@@ -4803,7 +4847,7 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
return false;
}
- if ( rDoc.HasAttrib( nStartCol, nStartRow, *itr, nEndCol, nEndRow, *itr,
+ if ( rDoc.HasAttrib( nStartCol, nStartRow, rTab, nEndCol, nEndRow, rTab,
HasAttrFlags::Merged | HasAttrFlags::Overlapped ) )
{
// "Merge of already merged cells not possible"
@@ -4815,9 +4859,8 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
ScDocumentUniquePtr pUndoDoc;
bool bNeedContentsUndo = false;
- for (set<SCTAB>::const_iterator itr = itrBeg; itr != itrEnd; ++itr)
+ for (const SCTAB nTab : rOption.maTabs)
{
- SCTAB nTab = *itr;
bool bIsBlockEmpty = ( nStartRow == nEndRow )
? rDoc.IsBlockEmpty( nTab, nStartCol+1,nStartRow, nEndCol,nEndRow, true )
: rDoc.IsBlockEmpty( nTab, nStartCol,nStartRow+1, nStartCol,nEndRow, true ) &&
@@ -4915,10 +4958,8 @@ bool ScDocFunc::UnmergeCells( const ScCellMergeOption& rOption, bool bRecord, Sc
ScDocument* pUndoDoc = (pUndoRemoveMerge ? pUndoRemoveMerge->GetUndoDoc() : nullptr);
assert( pUndoDoc || !pUndoRemoveMerge );
- for (set<SCTAB>::const_iterator itr = rOption.maTabs.begin(), itrEnd = rOption.maTabs.end();
- itr != itrEnd; ++itr)
+ for (const SCTAB nTab : rOption.maTabs)
{
- SCTAB nTab = *itr;
ScRange aRange = rOption.getSingleRange(nTab);
if ( !rDoc.HasAttrib(aRange, HasAttrFlags::Merged) )
continue;
@@ -5216,18 +5257,16 @@ bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, bool bApi )
//local names have higher priority than global names
ScRangeName* pLocalList = rDoc.GetRangeName(nTab);
sal_uInt16 nValidCount = 0;
- ScRangeName::iterator itrLocalBeg = pLocalList->begin(), itrLocalEnd = pLocalList->end();
- for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr)
+ for (const auto& rEntry : *pLocalList)
{
- const ScRangeData& r = *itr->second;
+ const ScRangeData& r = *rEntry.second;
if (!r.HasType(ScRangeData::Type::Database))
++nValidCount;
}
ScRangeName* pList = rDoc.GetRangeName();
- ScRangeName::iterator itrBeg = pList->begin(), itrEnd = pList->end();
- for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
+ for (const auto& rEntry : *pList)
{
- const ScRangeData& r = *itr->second;
+ const ScRangeData& r = *rEntry.second;
if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(r.GetUpperName()))
++nValidCount;
}
@@ -5256,16 +5295,16 @@ bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, bool bApi )
std::unique_ptr<ScRangeData*[]> ppSortArray(new ScRangeData* [ nValidCount ]);
sal_uInt16 j = 0;
- for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr)
+ for (const auto& rEntry : *pLocalList)
{
- ScRangeData& r = *itr->second;
+ ScRangeData& r = *rEntry.second;
if (!r.HasType(ScRangeData::Type::Database))
ppSortArray[j++] = &r;
}
- for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
+ for (const auto& [rName, rxData] : *pList)
{
- ScRangeData& r = *itr->second;
- if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(itr->first))
+ ScRangeData& r = *rxData;
+ if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(rName))
ppSortArray[j++] = &r;
}
qsort( static_cast<void*>(ppSortArray.get()), nValidCount, sizeof(ScRangeData*),
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index a2559ee562e2..5b51625f369c 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -35,10 +35,14 @@ namespace sc {
bool DocFuncUtil::hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMark )
{
SCTAB nTabCount = rDoc.GetTableCount();
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- if (rDoc.IsTabProtected(*itr))
+ for (const auto& rTab : rMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ if (rDoc.IsTabProtected(rTab))
return true;
+ }
return false;
}
@@ -51,10 +55,9 @@ ScDocumentUniquePtr DocFuncUtil::createDeleteContentsUndoDoc(
SCTAB nTab = rRange.aStart.Tab();
pUndoDoc->InitUndo(&rDoc, nTab, nTab);
SCTAB nTabCount = rDoc.GetTableCount();
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd; ++itr)
- if (*itr != nTab)
- pUndoDoc->AddUndoTab( *itr, *itr );
+ for (const auto& rTab : rMark)
+ if (rTab != nTab)
+ pUndoDoc->AddUndoTab( rTab, rTab );
ScRange aCopyRange = rRange;
aCopyRange.aStart.SetTab(0);
aCopyRange.aEnd.SetTab(nTabCount-1);
@@ -93,11 +96,8 @@ 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);
- ScMarkData::const_iterator it = rMark.begin(), itEnd = rMark.end();
- for (; it != itEnd; ++it)
+ for (const SCTAB nTab : rMark)
{
- SCTAB nTab = *it;
-
SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col();
SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index adcc96feeae9..7f45f9964084 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2999,10 +2999,8 @@ namespace {
void removeKeysIfExists(const Reference<ui::XAcceleratorConfiguration>& xScAccel, const vector<const awt::KeyEvent*>& rKeys)
{
- vector<const awt::KeyEvent*>::const_iterator itr = rKeys.begin(), itrEnd = rKeys.end();
- for (; itr != itrEnd; ++itr)
+ for (const awt::KeyEvent* p : rKeys)
{
- const awt::KeyEvent* p = *itr;
if (!p)
continue;
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 11f240c9d2f8..d937275a3a55 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -535,10 +535,9 @@ void ScDocShell::Execute( SfxRequest& rReq )
if (xQueryBox->run() == RET_YES)
{
ScDBCollection::NamedDBs& rDBs = pDBColl->getNamedDBs();
- ScDBCollection::NamedDBs::iterator itr = rDBs.begin(), itrEnd = rDBs.end();
- for (; itr != itrEnd; ++itr)
+ for (const auto& rxDB : rDBs)
{
- ScDBData& rDBData = **itr;
+ ScDBData& rDBData = *rxDB;
if ( rDBData.IsStripData() &&
rDBData.HasImportParam() && !rDBData.HasImportSelection() )
{
diff --git a/sc/source/ui/docshell/documentlinkmgr.cxx b/sc/source/ui/docshell/documentlinkmgr.cxx
index 7452f87d3ce7..479d1b0e56b2 100644
--- a/sc/source/ui/docshell/documentlinkmgr.cxx
+++ b/sc/source/ui/docshell/documentlinkmgr.cxx
@@ -52,8 +52,8 @@ struct DocumentLinkManagerImpl
if (linkManager)
{
sfx2::SvLinkSources aTemp = linkManager->GetServers();
- for (sfx2::SvLinkSources::const_iterator it = aTemp.begin(); it != aTemp.end(); ++it)
- (*it)->Closed();
+ for (const auto& pLinkSource : aTemp)
+ pLinkSource->Closed();
if (!linkManager->GetLinks().empty())
linkManager->Remove(0, linkManager->GetLinks().size());
diff --git a/sc/source/ui/docshell/editable.cxx b/sc/source/ui/docshell/editable.cxx
index 3b0f58ee653f..b66d47e77442 100644
--- a/sc/source/ui/docshell/editable.cxx
+++ b/sc/source/ui/docshell/editable.cxx
@@ -100,9 +100,13 @@ void ScEditableTester::TestSelectedBlock( const ScDocument* pDoc,
const ScMarkData& rMark )
{
SCTAB nTabCount = pDoc->GetTableCount();
- ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
- for (; itr != itrEnd && *itr < nTabCount; ++itr)
- TestBlock( pDoc, *itr, nStartCol, nStartRow, nEndCol, nEndRow );
+ for (const auto& rTab : rMark)
+ {
+ if (rTab >= nTabCount)
+ break;
+
+ TestBlock( pDoc, rTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ }
}
void ScEditableTester::TestRange( const ScDocument* pDoc, const ScRange& rRange )
@@ -137,12 +141,12 @@ void ScEditableTester::TestBlockForAction(
{
mbOnlyMatrix = false;
- for (ScMarkData::const_iterator it = rMark.begin(), itEnd = rMark.end(); it != itEnd; ++it)
+ for (const auto& rTab : rMark)
{
if (!mbIsEditable)
return;
- mbIsEditable = rDoc.IsEditActionAllowed(eAction, *it, nStart, nEnd);
+ mbIsEditable = rDoc.IsEditActionAllowed(eAction, rTab, nStart, nEnd);
}
}
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index c7086d6b70d1..3d4b93f323b4 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -336,10 +336,9 @@ void ScExternalRefCache::Table::getAllRows(vector<SCROW>& rRows, SCROW nLow, SCR
{
vector<SCROW> aRows;
aRows.reserve(maRows.size());
- RowsDataType::const_iterator itr = maRows.begin(), itrEnd = maRows.end();
- for (; itr != itrEnd; ++itr)
- if (nLow <= itr->first && itr->first <= nHigh)
- aRows.push_back(itr->first);
+ for (const auto& rEntry : maRows)
+ if (nLow <= rEntry.first && rEntry.first <= nHigh)
+ aRows.push_back(rEntry.first);
// hash map is not ordered, so we need to explicitly sort it.
::std::sort(aRows.begin(), aRows.end());
@@ -352,16 +351,10 @@ void ScExternalRefCache::Table::getAllRows(vector<SCROW>& rRows, SCROW nLow, SCR
if( !maRows.empty() )
{
// iterate over entire container (hash map is not sorted by key)
- RowsDataType::const_iterator itr = maRows.begin(), itrEnd = maRows.end();
- aRange.first = itr->first;
- aRange.second = itr->first + 1;
- while( ++itr != itrEnd )
- {
- if( itr->first < aRange.first )
- aRange.first = itr->first;
- else if( itr->first >= aRange.second )
- aRange.second = itr->first + 1;
- }
+ auto itMinMax = std::minmax_element(maRows.begin(), maRows.end(),
+ [](const RowsDataType::value_type& a, const RowsDataType::value_type& b) { return a.first < b.first; });
+ aRange.first = itMinMax.first->first;
+ aRange.second = itMinMax.second->first + 1;
}
return aRange;
}
@@ -376,10 +369,9 @@ void ScExternalRefCache::Table::getAllCols(SCROW nRow, vector<SCCOL>& rCols, SCC
const RowDataType& rRowData = itrRow->second;
vector<SCCOL> aCols;
aCols.reserve(rRowData.size());
- RowDataType::const_iterator itrCol = rRowData.begin(), itrColEnd = rRowData.end();
- for (; itrCol != itrColEnd; ++itrCol)
- if (nLow <= itrCol->first && itrCol->first <= nHigh)
- aCols.push_back(itrCol->first);
+ for (const auto& rCol : rRowData)
+ if (nLow <= rCol.first && rCol.first <= nHigh)
+ aCols.push_back(rCol.first);
// hash map is not ordered, so we need to explicitly sort it.
::std::sort(aCols.begin(), aCols.end());
@@ -399,30 +391,22 @@ void ScExternalRefCache::Table::getAllCols(SCROW nRow, vector<SCCOL>& rCols, SCC
if( !rRowData.empty() )
{
// iterate over entire container (hash map is not sorted by key)
- RowDataType::const_iterator itr = rRowData.begin(), itrEnd = rRowData.end();
- aRange.first = itr->first;
- aRange.second = itr->first + 1;
- while( ++itr != itrEnd )
- {
- if( itr->first < aRange.first )
- aRange.first = itr->first;
- else if( itr->first >= aRange.second )
- aRange.second = itr->first + 1;
- }
+ auto itMinMax = std::minmax_element(rRowData.begin(), rRowData.end(),
+ [](const RowDataType::value_type& a, const RowDataType::value_type& b) { return a.first < b.first; });
+ aRange.first = itMinMax.first->first;
+ aRange.second = itMinMax.second->first + 1;
}
return aRange;
}
void ScExternalRefCache::Table::getAllNumberFormats(vector<sal_uInt32>& rNumFmts) const
{
- RowsDataType::const_iterator itrRow = maRows.begin(), itrRowEnd = maRows.end();
- for (; itrRow != itrRowEnd; ++itrRow)
+ for (const auto& rRow : maRows)
{
- const RowDataType& rRowData = itrRow->second;
- RowDataType::const_iterator itrCol = rRowData.begin(), itrColEnd = rRowData.end();
- for (; itrCol != itrColEnd; ++itrCol)
+ const RowDataType& rRowData = rRow.second;
+ for (const auto& rCol : rRowData)
{
- const Cell& rCell = itrCol->second;
+ const Cell& rCell = rCol.second;
rNumFmts.push_back(rCell.mnFmtIndex);
}
}
@@ -642,10 +626,10 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
nDataRow2 = aRows.back();
SCCOL nMinCol = std::numeric_limits<SCCOL>::max();
SCCOL nMaxCol = std::numeric_limits<SCCOL>::min();
- for (vector<SCROW>::const_iterator itr = aRows.begin(), itrEnd = aRows.end(); itr != itrEnd; ++itr)
+ for (const auto& rRow : aRows)
{
vector<SCCOL> aCols;
- pTab->getAllCols(*itr, aCols, nDataCol1, nDataCol2);
+ pTab->getAllCols(rRow, aCols, nDataCol1, nDataCol2);
if (!aCols.empty())
{
nMinCol = std::min( nMinCol, aCols.front());
@@ -673,14 +657,12 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
if (bFill)
{
// Only fill non-empty cells, for better performance.
- for (vector<SCROW>::const_iterator itr = aRows.begin(), itrEnd = aRows.end(); itr != itrEnd; ++itr)
+ for (SCROW nRow : aRows)
{
- SCROW nRow = *itr;
vector<SCCOL> aCols;
pTab->getAllCols(nRow, aCols, nDataCol1, nDataCol2);
- for (vector<SCCOL>::const_iterator itrCol = aCols.begin(), itrColEnd = aCols.end(); itrCol != itrColEnd; ++itrCol)
+ for (SCCOL nCol : aCols)
{
- SCCOL nCol = *itrCol;
TokenRef pToken = pTab->getCell(nCol, nRow);
if (!pToken)
// This should never happen!
@@ -834,15 +816,14 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
size_t nTabFirstId = itrTabName->second;
SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col();
- vector<SingleRangeData>::const_iterator itrDataBeg = rData.begin(), itrDataEnd = rData.end();
- for (vector<SingleRangeData>::const_iterator itrData = itrDataBeg; itrData != itrDataEnd; ++itrData)
+ size_t i = nTabFirstId;
+ for (const auto& rItem : rData)
{
- size_t i = nTabFirstId + ::std::distance(itrDataBeg, itrData);
TableTypeRef& pTabData = rDoc.maTables[i];
if (!pTabData.get())
pTabData.reset(new Table);
- const ScMatrixRef& pMat = itrData->mpRangeData;
+ const ScMatrixRef& pMat = rItem.mpRangeData;
SCSIZE nMatCols, nMatRows;
pMat->GetDimensions( nMatCols, nMatRows);
if (nMatCols > static_cast<SCSIZE>(nCol2 - nCol1) && nMatRows > static_cast<SCSIZE>(nRow2 - nRow1))
@@ -883,6 +864,7 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
(nErr == FormulaError::MatrixSize ? ", ok" : ", not ok"));
}
}
+ ++i;
}
size_t nTabLastId = nTabFirstId + rRange.aEnd.Tab() - rRange.aStart.Tab();
@@ -945,10 +927,9 @@ void ScExternalRefCache::initializeDoc(sal_uInt16 nFileId, const vector<OUString
// when loading cached data from, say, Excel XCT/CRN records.
vector<TableName> aNewTabNames;
aNewTabNames.reserve(n);
- for (vector<OUString>::const_iterator itr = rTabNames.begin(), itrEnd = rTabNames.end();
- itr != itrEnd; ++itr)
+ for (const auto& rTabName : rTabNames)
{
- TableName aNameItem(ScGlobal::pCharClass->uppercase(*itr), *itr);
+ TableName aNameItem(ScGlobal::pCharClass->uppercase(rTabName), rTabName);
aNewTabNames.push_back(aNameItem);
}
pDoc->maTableNames.swap(aNewTabNames);
@@ -1065,9 +1046,8 @@ void ScExternalRefCache::getAllTableNames(sal_uInt16 nFileId, vector<OUString>&
size_t n = pDoc->maTableNames.size();
rTabNames.reserve(n);
- for (vector<TableName>::const_iterator itr = pDoc->maTableNames.begin(), itrEnd = pDoc->maTableNames.end();
- itr != itrEnd; ++itr)
- rTabNames.push_back(itr->maRealName);
+ for (const auto& rTableName : pDoc->maTableNames)
+ rTabNames.push_back(rTableName.maRealName);
}
SCTAB ScExternalRefCache::getTabSpan( sal_uInt16 nFileId, const OUString& rStartTabName, const OUString& rEndTabName ) const
@@ -1102,14 +1082,11 @@ void ScExternalRefCache::getAllNumberFormats(vector<sal_uInt32>& rNumFmts) const
using ::std::unique;
vector<sal_uInt32> aNumFmts;
- for (DocDataType::const_iterator itrDoc = maDocs.begin(), itrDocEnd = maDocs.end();
- itrDoc != itrDocEnd; ++itrDoc)
+ for (const auto& rEntry : maDocs)
{
- const vector<TableTypeRef>& rTables = itrDoc->second.maTables;
- for (vector<TableTypeRef>::const_iterator itrTab = rTables.begin(), itrTabEnd = rTables.end();
- itrTab != itrTabEnd; ++itrTab)
+ const vector<TableTypeRef>& rTables = rEntry.second.maTables;
+ for (const TableTypeRef& pTab : rTables)
{
- TableTypeRef pTab = *itrTab;
if (!pTab)
continue;
@@ -1129,11 +1106,10 @@ bool ScExternalRefCache::setCacheDocReferenced( sal_uInt16 nFileId )
if (!pDocItem)
return areAllCacheTablesReferenced();
- for (::std::vector<TableTypeRef>::iterator itrTab = pDocItem->maTables.begin();
- itrTab != pDocItem->maTables.end(); ++itrTab)
+ for (auto& rxTab : pDocItem->maTables)
{
- if ((*itrTab).get())
- (*itrTab)->setReferenced( true);
+ if (rxTab.get())
+ rxTab->setReferenced(true);
}
addCacheDocToReferenced( nFileId);
return areAllCacheTablesReferenced();
@@ -1172,31 +1148,27 @@ void ScExternalRefCache::setAllCacheTableReferencedStati( bool bReferenced )
if (bReferenced)
{
maReferenced.reset(0);
- for (DocDataType::iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
+ for (auto& rEntry : maDocs)
{
- ScExternalRefCache::DocItem& rDocItem = (*itrDoc).second;
- for (::std::vector<TableTypeRef>::iterator itrTab = rDocItem.maTables.begin();
- itrTab != rDocItem.maTables.end(); ++itrTab)
+ ScExternalRefCache::DocItem& rDocItem = rEntry.second;
+ for (auto& rxTab : rDocItem.maTables)
{
- if ((*itrTab).get())
- (*itrTab)->setReferenced( true);
+ if (rxTab.get())
+ rxTab->setReferenced(true);
}
}
}
else
{
size_t nDocs = 0;
- for (DocDataType::const_iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
- {
- if (nDocs <= (*itrDoc).first)
- nDocs = (*itrDoc).first + 1;
- }
+ auto itrMax = std::max_element(maDocs.begin(), maDocs.end(),
+ [](const DocDataType::value_type& a, const DocDataType::value_type& b) { return a.first < b.first; });
+ if (itrMax != maDocs.end())
+ nDocs = itrMax->first + 1;
maReferenced.reset( nDocs);
- for (DocDataType::iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
+ for (auto& [nFileId, rDocItem] : maDocs)
{
- ScExternalRefCache::DocItem& rDocItem = (*itrDoc).second;
- sal_uInt16 nFileId = (*itrDoc).first;
size_t nTables = rDocItem.maTables.size();
ReferencedStatus::DocReferenced & rDocReferenced = maReferenced.maDocs[nFileId];
// All referenced => non-existing tables evaluate as completed.
@@ -1274,16 +1246,12 @@ void ScExternalRefCache::getAllCachedDataSpans( sal_uInt16 nFileId, sc::ColumnSp
std::vector<SCROW> aRows;
pTab->getAllRows(aRows);
- std::vector<SCROW>::const_iterator itRow = aRows.begin(), itRowEnd = aRows.end();
- for (; itRow != itRowEnd; ++itRow)
+ for (SCROW nRow : aRows)
{
- SCROW nRow = *itRow;
std::vector<SCCOL> aCols;
pTab->getAllCols(nRow, aCols);
- std::vector<SCCOL>::const_iterator itCol = aCols.begin(), itColEnd = aCols.end();
- for (; itCol != itColEnd; ++itCol)
+ for (SCCOL nCol : aCols)
{
- SCCOL nCol = *itCol;
rSet.set(nTab, nCol, nRow, true);
}
}
@@ -1314,12 +1282,8 @@ void ScExternalRefCache::ReferencedStatus::reset( size_t nDocs )
void ScExternalRefCache::ReferencedStatus::checkAllDocs()
{
- for (DocReferencedVec::const_iterator itr = maDocs.begin(); itr != maDocs.end(); ++itr)
- {
- if (!(*itr).mbAllTablesReferenced)
- return;
- }
- mbAllReferenced = true;
+ if (std::all_of(maDocs.begin(), maDocs.end(), [](const DocReferenced& rDoc) { return rDoc.mbAllTablesReferenced; }))
+ mbAllReferenced = true;
}
ScExternalRefCache::TableTypeRef ScExternalRefCache::getCacheTable(sal_uInt16 nFileId, size_t nTabIndex) const
@@ -1739,11 +1703,13 @@ sal_uInt16 ScExternalRefManager::getExternalFileCount() const
void ScExternalRefManager::markUsedByLinkListeners()
{
bool bAllMarked = false;
- for (LinkListenerMap::const_iterator itr = maLinkListeners.begin();
- itr != maLinkListeners.end() && !bAllMarked; ++itr)
+ for (const auto& [rFileId, rLinkListeners] : maLinkListeners)
{
- if (!(*itr).second.empty())
- bAllMarked = maRefCache.setCacheDocReferenced( (*itr).first);
+ if (!rLinkListeners.empty())
+ bAllMarked = maRefCache.setCacheDocReferenced(rFileId);
+
+ if (bAllMarked)
+ break;
/* TODO: LinkListeners should remember the table they're listening to.
* As is, listening to one table will mark all tables of the document
* being referenced. */
@@ -1752,13 +1718,10 @@ void ScExternalRefManager::markUsedByLinkListeners()
void ScExternalRefManager::markUsedExternalRefCells()
{
- RefCellMap::iterator itr = maRefCells.begin(), itrEnd = maRefCells.end();
- for (; itr != itrEnd; ++itr)
+ for (const auto& rEntry : maRefCells)
{
- RefCellSet::iterator itrCell = itr->second.begin(), itrCellEnd = itr->second.end();
- for (; itrCell != itrCellEnd; ++itrCell)
+ for (ScFormulaCell* pCell : rEntry.second)
{
- ScFormulaCell* pCell = *itrCell;
bool bUsed = pCell->MarkUsedExternalReferences();
if (bUsed)
// Return true when at least one cell references external docs.
@@ -2196,11 +2159,8 @@ bool ScExternalRefManager::hasCellExternalReference(const ScAddress& rCell)
ScFormulaCell* pCell = mpDoc->GetFormulaCell(rCell);
if (pCell)
- for (RefCellMap::iterator itr = maRefCells.begin(); itr != maRefCells.end(); ++itr)
- {
- if (itr->second.find(pCell) != itr->second.end())
- return true;
- }
+ return std::any_of(maRefCells.begin(), maRefCells.end(),
+ [&pCell](const RefCellMap::value_type& rEntry) { return rEntry.second.find(pCell) != rEntry.second.end(); });
return false;
}
@@ -2215,9 +2175,8 @@ void ScExternalRefManager::enableDocTimer( bool bEnable )
{
if (!maDocShells.empty())
{
- DocShellMap::iterator it = maDocShells.begin(), itEnd = maDocShells.end();
- for (; it != itEnd; ++it)
- it->second.maLastAccess = tools::Time(tools::Time::SYSTEM);
+ for (auto& rEntry : maDocShells)
+ rEntry.second.maLastAccess = tools::Time(tools::Time::SYSTEM);
maSrcDocTimer.Start();
}
@@ -2757,10 +2716,8 @@ std::vector<OUString> ScExternalRefManager::getAllCachedExternalFileNames() cons
{
std::vector<OUString> aNames;
aNames.reserve(maSrcFiles.size());
- std::vector<SrcFileData>::const_iterator it = maSrcFiles.begin(), itEnd = maSrcFiles.end();
- for (; it != itEnd; ++it)
+ for (const SrcFileData& rData : maSrcFiles)
{
- const SrcFileData& rData = *it;
aNames.push_back(rData.maFileName);
}
@@ -3023,9 +2980,8 @@ void ScExternalRefManager::setFilterData(sal_uInt16 nFileId, const OUString& rFi
void ScExternalRefManager::clear()
{
- DocShellMap::iterator itrEnd = maDocShells.end();
- for (DocShellMap::iterator itr = maDocShells.begin(); itr != itrEnd; ++itr)
- itr->second.maShell->DoClose();
+ for (auto& rEntry : maDocShells)
+ rEntry.second.maShell->DoClose();
maDocShells.clear();
maSrcDocTimer.Stop();
@@ -3038,15 +2994,14 @@ bool ScExternalRefManager::hasExternalData() const
void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
{
- for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
- itr != itrEnd; ++itr)
+ for (auto& rSrcFile : maSrcFiles)
{
// Re-generate relative file name from the absolute file name.
- OUString aAbsName = itr->maRealFileName;
+ OUString aAbsName = rSrcFile.maRealFileName;
if (aAbsName.isEmpty())
- aAbsName = itr->maFileName;
+ aAbsName = rSrcFile.maFileName;
- itr->maRelativeName = URIHelper::simpleNormalizedMakeRelative(
+ rSrcFile.maRelativeName = URIHelper::simpleNormalizedMakeRelative(
rBaseFileUrl, aAbsName);
}
}
@@ -3054,16 +3009,15 @@ void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
void ScExternalRefManager::updateAbsAfterLoad()
{
OUString aOwn( getOwnDocumentName() );
- for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
- itr != itrEnd; ++itr)
+ for (auto& rSrcFile : maSrcFiles)
{
// update maFileName to the real file name,
// to be called when the original name is no longer needed (after CompileXML)
- itr->maybeCreateRealFileName( aOwn );
- OUString aReal = itr->maRealFileName;
+ rSrcFile.maybeCreateRealFileName( aOwn );
+ OUString aReal = rSrcFile.maRealFileName;
if (!aReal.isEmpty())
- itr->maFileName = aReal;
+ rSrcFile.maFileName = aReal;
}
}
@@ -3109,9 +3063,8 @@ void ScExternalRefManager::removeLinkListener(sal_uInt16 nFileId, LinkListener*
void ScExternalRefManager::removeLinkListener(LinkListener* pListener)
{
- LinkListenerMap::iterator itr = maLinkListeners.begin(), itrEnd = maLinkListeners.end();
- for (; itr != itrEnd; ++itr)
- itr->second.erase(pListener);
+ for (auto& rEntry : maLinkListeners)
+ rEntry.second.erase(pListener);
}
void ScExternalRefManager::notifyAllLinkListeners(sal_uInt16 nFileId, LinkUpdateType eType)
@@ -3128,18 +3081,17 @@ void ScExternalRefManager::notifyAllLinkListeners(sal_uInt16 nFileId, LinkUpdate
void ScExternalRefManager::purgeStaleSrcDocument(sal_Int32 nTimeOut)
{
// To avoid potentially freezing Calc, we close one stale document at a time.
- DocShellMap::iterator itr = maDocShells.begin(), itrEnd = maDocShells.end();
- for (; itr != itrEnd; ++itr)
- {
- // in 100th of a second.
- sal_Int32 nSinceLastAccess = (tools::Time( tools::Time::SYSTEM ) - itr->second.maLastAccess).GetTime();
- if (nSinceLastAccess >= nTimeOut)
- {
- // Timed out. Let's close this, and exit the loop.
- itr->second.maShell->DoClose();
- maDocShells.erase(itr);
- break;
- }
+ DocShellMap::iterator itr = std::find_if(maDocShells.begin(), maDocShells.end(),
+ [nTimeOut](const DocShellMap::value_type& rEntry) {
+ // in 100th of a second.
+ sal_Int32 nSinceLastAccess = (tools::Time( tools::Time::SYSTEM ) - rEntry.second.maLastAccess).GetTime();
+ return nSinceLastAccess >= nTimeOut;
+ });
+ if (itr != maDocShells.end())
+ {
+ // Timed out. Let's close this.
+ itr->second.maShell->DoClose();
+ maDocShells.erase(itr);
}
if (maDocShells.empty())
diff --git a/sc/source/ui/docshell/macromgr.cxx b/sc/source/ui/docshell/macromgr.cxx
index bbe31344c73b..108df7be46dc 100644
--- a/sc/source/ui/docshell/macromgr.cxx
+++ b/sc/source/ui/docshell/macromgr.cxx
@@ -60,10 +60,9 @@ public:
void removeCell(const ScFormulaCell* pCell)
{
- ModuleCellMap::iterator itr = maCells.begin(), itrEnd = maCells.end();
- for (; itr != itrEnd; ++itr)
+ for (auto& rEntry : maCells)
{
- itr->second.erase(std::remove(itr->second.begin(), itr->second.end(), pCell), itr->second.end() );
+ rEntry.second.erase(std::remove(rEntry.second.begin(), rEntry.second.end(), pCell), rEntry.second.end() );
}
}
@@ -181,10 +180,8 @@ void ScMacroManager::BroadcastModuleUpdate(const OUString& aModuleName)
{
vector<ScFormulaCell*> aCells;
mpDepTracker->getCellsByModule(aModuleName, aCells);
- vector<ScFormulaCell*>::iterator itr = aCells.begin(), itrEnd = aCells.end();
- for (; itr != itrEnd; ++itr)
+ for (ScFormulaCell* pCell : aCells)
{
- ScFormulaCell* pCell = *itr;
mpDoc->PutInFormulaTree(pCell); // for F9 recalc
// for recalc on cell value change. If the cell is not volatile, the