[Libreoffice-commits] core.git: Branch 'feature/sc-notes-storage' - sc/source
Laurent Godard
lgodard.libre at laposte.net
Wed Sep 18 07:32:55 PDT 2013
sc/source/core/data/column.cxx | 128 +++++++---------------------------------
sc/source/core/data/column3.cxx | 5 -
2 files changed, 27 insertions(+), 106 deletions(-)
New commits:
commit 9c085920fdaf3b9dd7769ec2816d5caa6d44a818
Author: Laurent Godard <lgodard.libre at laposte.net>
Date: Wed Sep 18 16:31:11 2013 +0200
copy a sheet now transfers notes + minor changes
Change-Id: Ib7cff176f5b4fe12a8edb4ccc5cb65acf6054338
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 2d67b27..4cdcf9a 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1603,10 +1603,6 @@ void ScColumn::CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDes
bSet = false;
}
- // copy notes even on empty cells
-// ScPostIt* pPostIt = maCellNotes.get<ScPostIt*>(nSrcRow);
-// rDestCol.maCellNotes.set(nDestRow, pPostIt);
-
if (bSet)
{
rDestCol.maCellTextAttrs.set(nDestRow, maCellTextAttrs.get<sc::CellTextAttr>(nSrcRow));
@@ -1856,6 +1852,27 @@ class CopyByCloneHandler
}
}
+ void duplicateNotes(SCROW nStartRow, size_t nOffset, size_t nDataSize ) // TODO : notes suboptimal
+ {
+ sc::CellNoteStoreType maSrcCellNotes = mrSrcCol.GetCellNoteStore();
+
+ for (SCROW nRow = nStartRow; nRow < nStartRow + nDataSize; ++nRow)
+ {
+ ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
+ ScPostIt* pClonedNote;
+ if (pSrcNote)
+ {
+ ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab());
+ pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
+ mrDestCol.GetDoc(),
+ aDestPos, true );
+ mrDestCol.GetDoc().ReleaseNote(aDestPos);
+ mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote);
+ }
+ }
+
+ }
+
public:
CopyByCloneHandler(const ScColumn& rSrcCol, ScColumn& rDestCol, sc::ColumnBlockPosition* pDestPos, sal_uInt16 nCopyFlags) :
mrSrcCol(rSrcCol), mrDestCol(rDestCol), mpDestPos(pDestPos), mnCopyFlags(nCopyFlags)
@@ -1874,6 +1891,9 @@ public:
{
size_t nRow = aNode.position + nOffset;
+ if (mnCopyFlags & (IDF_NOTE|IDF_ADDNOTES))
+ duplicateNotes(nRow, nOffset, nDataSize );
+
switch (aNode.type)
{
case sc::element_type_numeric:
@@ -1894,31 +1914,6 @@ public:
maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, *it);
setDefaultAttrToDest(nRow);
-
- // TODO : notes - copy notes
- bool mbCopyNotes = true;
- if (mbCopyNotes)
- {
- //maDestPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(maDestPos.miCellNotePos, nTopRow, it, itEnd);
- sc::CellNoteStoreType maSrcCellNotes = mrSrcCol.GetCellNoteStore();
- sc::CellNoteStoreType::position_type aPosNotes = maSrcCellNotes.position(nRow);
- sc::CellNoteStoreType::iterator itNotes = aPosNotes.first;
- if (itNotes->type == sc::element_type_cellnote)
- {
- ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
- if (pSrcNote)
- {
- ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab());
- ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
- mrDestCol.GetDoc(),
- aDestPos, true );
- mrDestCol.GetDoc().ReleaseNote(aDestPos);
- mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote);
- }
- }
- }
-
-
}
}
break;
@@ -1949,30 +1944,6 @@ public:
mrDestCol.GetCellStore().set(maDestPos.miCellPos, nRow, rStr);
setDefaultAttrToDest(nRow);
}
-
- // TODO : notes - copy notes
- bool mbCopyNotes = true;
- if (mbCopyNotes)
- {
- //maDestPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(maDestPos.miCellNotePos, nTopRow, it, itEnd);
- sc::CellNoteStoreType maSrcCellNotes = mrSrcCol.GetCellNoteStore();
- sc::CellNoteStoreType::position_type aPosNotes = maSrcCellNotes.position(nRow);
- sc::CellNoteStoreType::iterator itNotes = aPosNotes.first;
- if (itNotes->type == sc::element_type_cellnote)
- {
- ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
- if (pSrcNote)
- {
- ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab());
- ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
- mrDestCol.GetDoc(),
- aDestPos, true );
- mrDestCol.GetDoc().ReleaseNote(aDestPos);
- mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote);
- }
- }
- }
-
}
}
break;
@@ -1989,38 +1960,12 @@ public:
std::vector<EditTextObject*> aCloned;
aCloned.reserve(nDataSize);
for (; it != itEnd; ++it, ++nRow)
- {
aCloned.push_back(ScEditUtil::Clone(**it, mrDestCol.GetDoc()));
- // TODO : notes - copy notes
- bool mbCopyNotes = true;
- if (mbCopyNotes)
- {
- //maDestPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(maDestPos.miCellNotePos, nTopRow, it, itEnd);
- sc::CellNoteStoreType maSrcCellNotes = mrSrcCol.GetCellNoteStore();
- sc::CellNoteStoreType::position_type aPosNotes = maSrcCellNotes.position(nRow);
- sc::CellNoteStoreType::iterator itNotes = aPosNotes.first;
- if (itNotes->type == sc::element_type_cellnote)
- {
- ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
- if (pSrcNote)
- {
- ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab());
- ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
- mrDestCol.GetDoc(),
- aDestPos, true );
- mrDestCol.GetDoc().ReleaseNote(aDestPos);
- mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote);
- }
- }
- }
- }
maDestPos.miCellPos = mrDestCol.GetCellStore().set(
maDestPos.miCellPos, nRow, aCloned.begin(), aCloned.end());
setDefaultAttrsToDest(nRow, nDataSize);
-
-
}
break;
case sc::element_type_formula:
@@ -2031,35 +1976,10 @@ public:
std::advance(itEnd, nDataSize);
for (; it != itEnd; ++it, ++nRow)
- {
cloneFormulaCell(nRow, const_cast<ScFormulaCell&>(**it));
- // TODO : notes - copy notes
- bool mbCopyNotes = true;
- if (mbCopyNotes)
- {
- //maDestPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(maDestPos.miCellNotePos, nTopRow, it, itEnd);
- sc::CellNoteStoreType maSrcCellNotes = mrSrcCol.GetCellNoteStore();
- sc::CellNoteStoreType::position_type aPosNotes = maSrcCellNotes.position(nRow);
- sc::CellNoteStoreType::iterator itNotes = aPosNotes.first;
- if (itNotes->type == sc::element_type_cellnote)
- {
- ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
- if (pSrcNote)
- {
- ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow, mrDestCol.GetTab());
- ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
- mrDestCol.GetDoc(),
- aDestPos, true );
- mrDestCol.GetDoc().ReleaseNote(aDestPos);
- mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote);
- }
- }
- }
- }
}
break;
default:
- // TODO : notes - copy notes from empty cells
;
}
}
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 4112ed5..31a4ff3 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -712,14 +712,15 @@ class CopyCellsFromClipHandler
for (; itNote != itNoteEnd; ++itNote, ++nRow)
{
ScPostIt* pSrcNote = maSrcCellNotes.get<ScPostIt*>(nRow);
+ ScPostIt* pClonedNote;
if (pSrcNote)
{
ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nRow+mnRowOffset, mrDestCol.GetTab());
- ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
+ pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nRow, mrSrcCol.GetTab() ),
mrDestCol.GetDoc(),
aDestPos, true );
- aNotes.push_back(pClonedNote);
}
+ aNotes.push_back(pClonedNote);
}
maDestBlockPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(
More information about the Libreoffice-commits
mailing list