summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-04-15 13:07:54 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-04-15 12:47:56 +0000
commit67abc250e5f30844797996e09e66e61c2ef214db (patch)
tree70e421ac7d5d05fca5674794b5203fdb4299ea2c
parent00d6a4b24b497e35595dfe8181af9522440c9aab (diff)
fix InsertTab and DeleteTab in ScMarkData, tdf#72240
Change-Id: Id3168e4cac6c52b36833b454518cce55b51e36b4 Reviewed-on: https://gerrit.libreoffice.org/24103 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--sc/source/core/data/markdata.cxx27
1 files changed, 18 insertions, 9 deletions
diff --git a/sc/source/core/data/markdata.cxx b/sc/source/core/data/markdata.cxx
index 154a6938a204..53a5023677ae 100644
--- a/sc/source/core/data/markdata.cxx
+++ b/sc/source/core/data/markdata.cxx
@@ -512,20 +512,29 @@ bool ScMarkData::HasAnyMultiMarks() const
void ScMarkData::InsertTab( SCTAB nTab )
{
- std::set<SCTAB> tabMarked(maTabMarked.begin(), maTabMarked.upper_bound(nTab));
- std::set<SCTAB>::iterator it = maTabMarked.upper_bound(nTab);
- for (; it != maTabMarked.end(); ++it)
- tabMarked.insert(*it + 1);
+ std::set<SCTAB> tabMarked;
+ for (auto itr = maTabMarked.begin(), itrEnd = maTabMarked.end();
+ itr != itrEnd; ++itr)
+ {
+ if (*itr < nTab)
+ tabMarked.insert(*itr);
+ else if (*itr >= nTab)
+ tabMarked.insert(*itr + 1);
+ }
maTabMarked.swap(tabMarked);
}
void ScMarkData::DeleteTab( SCTAB nTab )
{
- std::set<SCTAB> tabMarked(maTabMarked.begin(), maTabMarked.find(nTab));
- tabMarked.erase( nTab );
- std::set<SCTAB>::iterator it = maTabMarked.find(nTab);
- for (; it != maTabMarked.end(); ++it)
- tabMarked.insert(*it + 1);
+ std::set<SCTAB> tabMarked;
+ for (auto itr = maTabMarked.begin(), itrEnd = maTabMarked.end();
+ itr != itrEnd; ++itr)
+ {
+ if (*itr < nTab)
+ tabMarked.insert(*itr);
+ else if (*itr > nTab)
+ tabMarked.insert(*itr - 1);
+ }
maTabMarked.swap(tabMarked);
}