sc/inc/column.hxx | 12 +++++++----- sc/source/core/data/column4.cxx | 10 ++++++---- sc/source/core/data/table3.cxx | 3 ++- 3 files changed, 15 insertions(+), 10 deletions(-)
New commits: commit d1d41626387391d72c0e495a43b6190e6d0fec02 Author: Eike Rathke <er...@redhat.com> Date: Mon Nov 17 22:44:56 2014 +0100 fdo#83765 do not update references in SortReorderByColumn() if disabled Similar to SortReorderByRow() (cherry picked from commit 115a4b7ca36f65d93070d2e81048320d202e87a3) Conflicts: sc/inc/column.hxx Change-Id: I39f8d62b79994196b9c5933355dbbc66a5f60a5d Reviewed-on: https://gerrit.libreoffice.org/13113 Reviewed-by: Kohei Yoshida <libreoff...@kohei.us> Tested-by: Kohei Yoshida <libreoff...@kohei.us> diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 8f8a93c..097c377 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -584,18 +584,20 @@ public: /** * Reset column position of formula cells within specified row range. - * Reference positions are also adjusted to reflect the new position so - * that the formula cells still reference the same cells or ranges after - * the the position change. The position of a formula cell before the - * call is interpreted as the old position of that cell. + * If bUpdateRefs==true then reference positions are also adjusted to + * reflect the new position so that the formula cells still reference the + * same cells or ranges after the the position change. + * The position of a formula cell before the call is interpreted as the old + * position of that cell. * * Caller needs to ensure that no formula groups cross the top and bottom * row boundaries. * * @param nRow1 top row boundary * @param nRow2 bottom row boundary + * @param bUpdateRefs whether to adjust references */ - void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2 ); + void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs ); void SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange ); diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index 93fca48..c1cf89e 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -856,8 +856,9 @@ namespace { class FormulaColPosSetter { SCCOL mnCol; + bool mbUpdateRefs; public: - FormulaColPosSetter( SCCOL nCol ) : mnCol(nCol) {} + FormulaColPosSetter( SCCOL nCol, bool bUpdateRefs ) : mnCol(nCol), mbUpdateRefs(bUpdateRefs) {} void operator() ( size_t nRow, ScFormulaCell* pCell ) { @@ -868,7 +869,8 @@ public: ScAddress aOldPos = pCell->aPos; pCell->aPos.SetCol(mnCol); pCell->aPos.SetRow(nRow); - pCell->GetCode()->AdjustReferenceOnMovedOrigin(aOldPos, pCell->aPos); + if (mbUpdateRefs) + pCell->GetCode()->AdjustReferenceOnMovedOrigin(aOldPos, pCell->aPos); } else { @@ -880,9 +882,9 @@ public: } -void ScColumn::ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2 ) +void ScColumn::ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs ) { - FormulaColPosSetter aFunc(nCol); + FormulaColPosSetter aFunc(nCol, bUpdateRefs); sc::ProcessFormula(maCells.begin(), maCells, nRow1, nRow2, aFunc); } diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index af9793d..3b02d62 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -718,8 +718,9 @@ void ScTable::SortReorderByColumn( } // Reset formula cell positions which became out-of-sync after column reordering. + bool bUpdateRefs = pArray->IsUpdateRefs(); for (SCCOL nCol = nStart; nCol <= nLast; ++nCol) - aCol[nCol].ResetFormulaCellPositions(nRow1, nRow2); + aCol[nCol].ResetFormulaCellPositions(nRow1, nRow2, bUpdateRefs); // Set up column reorder map (for later broadcasting of reference updates). sc::ColRowReorderMapType aColMap; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits