sc/source/core/data/column.cxx | 6 ++++++ sc/source/core/data/formulacell.cxx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-)
New commits: commit 4b2f0915f9f3bff7d2476ec41a272e5263fbb312 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Sun Oct 12 10:18:09 2014 -0400 fdo#83901: ROW() and COLUMN() to be properly recalculated on cell move. For cases where ROW or COLUMN references another cell that has shifted. Change-Id: Ic4bef8672dab811ceff6886d9af0388306a66485 (cherry picked from commit 0b29a16d1dcffd75e49bd7ad3da867b0d0ebfa38) Reviewed-on: https://gerrit.libreoffice.org/11934 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 1676e1b..42da658 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -2096,6 +2096,12 @@ class UpdateRefOnNonCopy : std::unary_function<sc::FormulaGroupEntry, void> if (pCode->IsRecalcModeOnRefMove()) aRes.mbValueChanged = true; } + else if (aRes.mbReferenceModified && pCode->IsRecalcModeOnRefMove()) + { + // The cell itself hasn't shifted. But it may have ROW or COLUMN + // referencing another cell that has. + aRes.mbValueChanged = true; + } if (aRes.mbNameModified) recompileTokenArray(*pTop); diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 2059aee..96eb323 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -2758,7 +2758,7 @@ bool ScFormulaCell::UpdateReferenceOnShift( if (bOnRefMove) // Cell may reference itself, e.g. ocColumn, ocRow without parameter - bOnRefMove = (bValChanged || (aPos != aOldPos)); + bOnRefMove = (bValChanged || (aPos != aOldPos) || bRefModified); bool bNewListening = false; bool bInDeleteUndo = false;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits