sc/source/core/data/column4.cxx |   14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

New commits:
commit 7c44b078a8ae511e092d6e0f2e371ab017195791
Author: Eike Rathke <er...@redhat.com>
Date:   Tue Aug 2 19:55:08 2016 +0200

    Resolves: tdf#100582 SetMatColsRows() when constructing matrix ScFormulaCell
    
    ... from an ScFormulaCellGroup token array, because ScFormulaResult that 
holds
    the matrix dimensions is not cloned in that case as we don't clone from an
    ScFormulaCell.
    
    Change-Id: I13ab1b29db71ae1618580de995fe12ec423d4dc7
    (cherry picked from commit c82a81bbda104ef08dd9e18725a09475b2d65183)
    Reviewed-on: https://gerrit.libreoffice.org/27808
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index 6e8e4da..b524c59 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -483,6 +483,16 @@ void ScColumn::CloneFormulaCell(
     sc::CellStoreType::iterator itPos = maCells.begin();
     sc::CellTextAttrStoreType::iterator itAttrPos = maCellTextAttrs.begin();
 
+    SCCOL nMatrixCols = 0;
+    SCROW nMatrixRows = 0;
+    sal_uInt8 nMatrixFlag = rSrc.GetMatrixFlag();
+    if (nMatrixFlag == MM_FORMULA)
+    {
+        rSrc.GetMatColsRows( nMatrixCols, nMatrixRows);
+        SAL_WARN_IF( nMatrixCols != 1 || nMatrixRows != 1, "sc.core",
+                "ScColumn::CloneFormulaCell - cloning array/matrix with not 
exactly one column or row as single cell");
+    }
+
     std::vector<ScFormulaCell*> aFormulas;
     std::vector<sc::RowSpan>::const_iterator itSpan = rRanges.begin(), 
itSpanEnd = rRanges.end();
     for (; itSpan != itSpanEnd; ++itSpan)
@@ -514,7 +524,9 @@ void ScColumn::CloneFormulaCell(
             xGroup->compileCode(*pDocument, aPos, pDocument->GetGrammar());
             for (size_t i = 0; i < nLen; ++i, aPos.IncRow())
             {
-                ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, 
xGroup, pDocument->GetGrammar(), rSrc.GetMatrixFlag());
+                ScFormulaCell* pCell = new ScFormulaCell(pDocument, aPos, 
xGroup, pDocument->GetGrammar(), nMatrixFlag);
+                if (nMatrixFlag == MM_FORMULA)
+                    pCell->SetMatColsRows( nMatrixCols, nMatrixRows);
                 if (i == 0)
                 {
                     xGroup->mpTopCell = pCell;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to