[Libreoffice-commits] .: sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Thu Mar 1 19:54:06 PST 2012
sc/source/core/data/table3.cxx | 65 +++++++++++++++++++++++++++++++++++------
1 file changed, 57 insertions(+), 8 deletions(-)
New commits:
commit d7db93f5f4972a94ab3157578e9c8795dc089caa
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Fri Mar 2 04:49:27 2012 +0100
implement SwapCol and SwapRow for note handling again
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index db0c249..da43fbc 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -580,14 +580,39 @@ void ScTable::SwapCol(SCCOL nCol1, SCCOL nCol2)
}
}
}
- for (ScNotes::iterator itr = maNotes.begin(); itr != maNotes.end(); ++itr)
+
+ ScNotes aNoteMap(pDocument);
+ ScNotes::iterator itr = maNotes.begin();
+ while(itr != maNotes.end())
{
- if (itr->first.first == nCol1 || itr->first.first == nCol2)
+ SCCOL nCol = itr->first.first;
+ SCROW nRow = itr->first.second;
+ ScPostIt* pPostIt = itr->second;
+ ++itr;
+
+ if (nCol == nCol1)
{
- //only then we need to swap
- //TODO: implement it
+ aNoteMap.insert(nCol, nRow, pPostIt);
+ maNotes.ReleaseNote(nCol2, nRow);
+ }
+ else if (nCol == nCol2)
+ {
+ aNoteMap.insert(nCol, nRow, pPostIt);
+ maNotes.ReleaseNote(nCol1, nRow);
+
}
}
+
+ itr = aNoteMap.begin();
+ {
+ //we can here assume that there is no note in the target location
+ SCCOL nCol = itr->first.first;
+ SCROW nRow = itr->first.second;
+ ScPostIt* pPostIt = itr->second;
+
+ maNotes.insert(nCol, nRow, pPostIt);
+ aNoteMap.ReleaseNote(nCol, nRow);
+ }
}
void ScTable::SwapRow(SCROW nRow1, SCROW nRow2)
@@ -619,14 +644,38 @@ void ScTable::SwapRow(SCROW nRow1, SCROW nRow2)
SetRowFiltered(nRow2, nRow2, bRow1Filtered);
}
- for (ScNotes::iterator itr = maNotes.begin(); itr != maNotes.end(); ++itr)
+ ScNotes aNoteMap(pDocument);
+ ScNotes::iterator itr = maNotes.begin();
+ while(itr != maNotes.end())
{
- if (itr->first.second == nRow1 || itr->first.second == nRow2)
+ SCCOL nCol = itr->first.first;
+ SCROW nRow = itr->first.second;
+ ScPostIt* pPostIt = itr->second;
+ ++itr;
+
+ if (nRow == nRow1)
+ {
+ aNoteMap.insert(nCol, nRow, pPostIt);
+ maNotes.ReleaseNote(nCol, nRow2);
+ }
+ else if (nRow == nRow2)
{
- //only then we need to swap
- //TODO:implement it
+ aNoteMap.insert(nCol, nRow, pPostIt);
+ maNotes.ReleaseNote(nCol, nRow1);
+
}
}
+
+ itr = aNoteMap.begin();
+ {
+ //we can here assume that there is no note in the target location
+ SCCOL nCol = itr->first.first;
+ SCROW nRow = itr->first.second;
+ ScPostIt* pPostIt = itr->second;
+
+ maNotes.insert(nCol, nRow, pPostIt);
+ aNoteMap.ReleaseNote(nCol, nRow);
+ }
}
short ScTable::Compare(SCCOLROW nIndex1, SCCOLROW nIndex2)
More information about the Libreoffice-commits
mailing list