sc/source/core/data/column.cxx | 25 ++++++++--------------- sc/source/core/data/column3.cxx | 43 +++++++++++++++++++++++++++++++++------- 2 files changed, 45 insertions(+), 23 deletions(-)
New commits: commit ba1b6e1b8fad4cc0aec1a346498ff86608264809 Author: Laurent Godard <[email protected]> Date: Wed Sep 18 11:15:48 2013 +0200 notes & clipboard : notes on empty cells are not copied still not working Change-Id: Ic377d4d8626a058508f0a2abf635f593f48adee4 diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 18592fd..bbeafdc 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -1322,7 +1322,7 @@ public: { size_t nTopRow = aNode.position + nOffset; - bool isSupportedNodeType = false; + bool bSet = true; switch (aNode.type) { @@ -1333,9 +1333,6 @@ public: sc::numeric_block::const_iterator itEnd = it; std::advance(itEnd, nDataSize); maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nTopRow, it, itEnd); - - isSupportedNodeType = true; - } break; case sc::element_type_string: @@ -1345,9 +1342,6 @@ public: sc::string_block::const_iterator itEnd = it; std::advance(itEnd, nDataSize); maDestPos.miCellPos = mrDestCol.GetCellStore().set(maDestPos.miCellPos, nTopRow, it, itEnd); - - isSupportedNodeType = true; - } break; case sc::element_type_edittext: @@ -1364,9 +1358,6 @@ public: maDestPos.miCellPos = mrDestCol.GetCellStore().set( maDestPos.miCellPos, nTopRow, aCloned.begin(), aCloned.end()); - - isSupportedNodeType = true; - } break; case sc::element_type_formula: @@ -1407,19 +1398,16 @@ public: aPos = rDestCells.position(maDestPos.miCellPos, nLastRow+1); sc::SharedFormulaUtil::joinFormulaCellAbove(aPos); } - - isSupportedNodeType = true; - } break; default: + bSet = true; ; } - if (isSupportedNodeType) + if (bSet) { setDefaultAttrsToDest(nTopRow, nDataSize); - if (mbCopyNotes) { //maDestPos.miCellNotePos = mrDestCol.GetCellNoteStore().set(maDestPos.miCellNotePos, nTopRow, it, itEnd); @@ -1439,8 +1427,9 @@ public: mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote); } } - } + } } + } }; @@ -1605,6 +1594,10 @@ 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)); diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index d240970..ed3c382 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -972,7 +972,36 @@ public: } break; default: - ; + /* TODO : notes - notes of empty cell are note copied */ + /* the following code does not solve it */ + { + if (bCopyCellNotes) + { + sc::formula_block::const_iterator it = sc::formula_block::begin(*node.data); + std::advance(it, nOffset); + sc::formula_block::const_iterator itEnd = it; + std::advance(itEnd, nDataSize); + for (SCROW nSrcRow = nSrcRow1; it != itEnd; ++it, ++nSrcRow) + { + sc::CellNoteStoreType& maCellNotesSrc = mrSrcCol.GetCellNoteStore(); + sc::CellNoteStoreType::position_type aPos = maCellNotesSrc.position(nSrcRow); + sc::CellNoteStoreType::iterator itNotes = aPos.first; + if (itNotes->type == sc::element_type_cellnote) + { + ScPostIt* pSrcNote = maCellNotesSrc.get<ScPostIt*>(nSrcRow); + if (pSrcNote) + { + ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow+mnRowOffset, mrDestCol.GetTab()); + ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nSrcRow, mrSrcCol.GetTab() ), + mrDestCol.GetDoc(), + aDestPos, true ); + mrDestCol.GetDoc().ReleaseNote(aDestPos); + mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote); + } + } + } + } + } } } }; commit f500329e756fad3f2dacbb1efa6498166f382e24 Author: Laurent Godard <[email protected]> Date: Tue Sep 17 13:08:01 2013 +0200 notes & clipboard notes is now copied at correct cell Change-Id: Idaa336b01d9de9b3ee81dffc4ef235a9bd13fc4f diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 19f2aa7..d240970 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -770,7 +770,7 @@ public: ScPostIt* pSrcNote = maCellNotesSrc.get<ScPostIt*>(nSrcRow); if (pSrcNote) { - ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow, mrDestCol.GetTab()); + ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow+mnRowOffset, mrDestCol.GetTab()); ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nSrcRow, mrSrcCol.GetTab() ), mrDestCol.GetDoc(), aDestPos, true ); @@ -809,7 +809,7 @@ public: ScPostIt* pSrcNote = maCellNotesSrc.get<ScPostIt*>(nSrcRow); if (pSrcNote) { - ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow, mrDestCol.GetTab()); + ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow+mnRowOffset, mrDestCol.GetTab()); ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nSrcRow, mrSrcCol.GetTab() ), mrDestCol.GetDoc(), aDestPos, true ); @@ -848,7 +848,7 @@ public: ScPostIt* pSrcNote = maCellNotesSrc.get<ScPostIt*>(nSrcRow); if (pSrcNote) { - ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow, mrDestCol.GetTab()); + ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow+mnRowOffset, mrDestCol.GetTab()); ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nSrcRow, mrSrcCol.GetTab() ), mrDestCol.GetDoc(), aDestPos, true ); @@ -959,12 +959,12 @@ public: ScPostIt* pSrcNote = maCellNotesSrc.get<ScPostIt*>(nSrcRow); if (pSrcNote) { - ScAddress aDestPos = ScAddress(mrDestCol.GetCol(), nSrcRow, mrDestCol.GetTab()); + ScAddress aDestPosNotes = ScAddress(mrDestCol.GetCol(), nSrcRow+mnRowOffset, mrDestCol.GetTab()); ScPostIt* pClonedNote = pSrcNote->Clone( ScAddress(mrSrcCol.GetCol(), nSrcRow, mrSrcCol.GetTab() ), mrDestCol.GetDoc(), - aDestPos, true ); - mrDestCol.GetDoc().ReleaseNote(aDestPos); - mrDestCol.GetDoc().SetNote(aDestPos, pClonedNote); + aDestPosNotes, true ); + mrDestCol.GetDoc().ReleaseNote(aDestPosNotes); + mrDestCol.GetDoc().SetNote(aDestPosNotes, pClonedNote); } } } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
