sc/source/core/data/column.cxx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)
New commits: commit e4f9097d7542c8dbecfa133757d76fb6a3f66505 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Jul 8 15:19:04 2013 -0400 Re-group formula cells on paste. Change-Id: Ia5251a3bc8387289056abacbb4836b77262aad12 diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 6744c13..fad7edd 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -2267,9 +2267,23 @@ bool ScColumn::UpdateReference( { if (eUpdateRefMode == URM_COPY) { + // When copying, the range equals the destination range where cells + // are pasted, and the dx, dy, dz refer to the distance from the + // source range. + UpdateRefOnCopy aHandler(rRange, nDx, nDy, nDz, pUndoDoc); - FormulaCellsUndecided(rRange.aStart.Row(), rRange.aEnd.Row()); - sc::ProcessBlock(maCells.begin(), maCells, aHandler, rRange.aStart.Row(), rRange.aEnd.Row()); + sc::CellStoreType::position_type aPos = maCells.position(rRange.aStart.Row()); + sc::ProcessBlock(aPos.first, maCells, aHandler, rRange.aStart.Row(), rRange.aEnd.Row()); + + // The formula groups at the top and bottom boundaries are expected to + // have been split prior to this call. Here, we only do the joining. + JoinFormulaCellAbove(aPos); + if (rRange.aEnd.Row() < MAXROW) + { + aPos = maCells.position(aPos.first, rRange.aEnd.Row()+1); + JoinFormulaCellAbove(aPos); + } + return aHandler.isUpdated(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits