[Libreoffice-commits] core.git: 3 commits - sc/qa sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Sun Dec 7 00:57:25 PST 2014
sc/qa/unit/ucalc.cxx | 30 ++++++++++++++++++++++++++++++
sc/qa/unit/ucalc.hxx | 2 ++
sc/source/core/data/table4.cxx | 10 +++++++---
3 files changed, 39 insertions(+), 3 deletions(-)
New commits:
commit e6304affe916ed7e310da7b348f7d2ff166718f5
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Dec 7 09:52:33 2014 +0100
add test case for fdo#86754
Change-Id: I0f57c1124e62d8946b68c614e3ff09d26b569e77
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index d7d8cdb..d2c66bb 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4487,6 +4487,36 @@ void Test::testAutoFill()
m_pDoc->DeleteTab(0);
}
+void Test::testAutoFillSimple()
+{
+ m_pDoc->InsertTab(0, "test");
+
+ m_pDoc->SetValue(0, 0, 0, 1);
+ m_pDoc->SetString(0, 1, 0, "=10");
+
+ ScMarkData aMarkData;
+ aMarkData.SelectTable(0, true);
+
+ m_pDoc->Fill( 0, 0, 0, 1, NULL, aMarkData, 6, FILL_TO_BOTTOM, FILL_AUTO);
+
+ for(SCROW nRow = 0; nRow < 8; ++nRow)
+ {
+ if (nRow % 2 == 0)
+ {
+ double nVal = m_pDoc->GetValue(0, nRow, 0);
+ CPPUNIT_ASSERT_EQUAL(double((nRow+2)/2), nVal);
+ }
+ else
+ {
+ OString aMsg = OString("wrong value in row: ") + OString::number(nRow);
+ double nVal = m_pDoc->GetValue(0, nRow, 0);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(aMsg.getStr(), 10.0, nVal);
+ }
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testCopyPasteFormulas()
{
m_pDoc->InsertTab(0, "Sheet1");
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index ed35ca1..9ab1199a 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -360,6 +360,7 @@ public:
void testRenameTable();
void testAutoFill();
+ void testAutoFillSimple();
void testCopyPasteFormulas();
void testCopyPasteFormulasExternalDoc();
@@ -564,6 +565,7 @@ public:
CPPUNIT_TEST(testSetBackgroundColor);
CPPUNIT_TEST(testRenameTable);
CPPUNIT_TEST(testAutoFill);
+ CPPUNIT_TEST(testAutoFillSimple);
CPPUNIT_TEST(testCopyPasteFormulas);
CPPUNIT_TEST(testCopyPasteFormulasExternalDoc);
CPPUNIT_TEST(testFindAreaPosVertical);
commit 4cfca1b859bfb6b2dbe18d79a46f689fc6dbfbab
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Dec 7 09:17:50 2014 +0100
handle all fill cases correctly, fdo#86754
That special case only works if the whole source range contains formula
cells. For now we just limit it to the special case of a single source
cell.
Change-Id: I71ccfde06edd97e5a9c78da22053583d05aac411
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index 68f9bd4..61a0be4 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -1313,7 +1313,7 @@ void ScTable::FillAutoSimple(
if (bVertical) // rInner&:=nRow, rOuter&:=nCol
{
aSrcCell = aCol[rCol].GetCellValue(nSource);
- if (aSrcCell.meType == CELLTYPE_FORMULA)
+ if (nISrcStart == nISrcEnd && aSrcCell.meType == CELLTYPE_FORMULA)
{
FillFormulaVertical(*aSrcCell.mpFormula, rInner, rCol, nIStart, nIEnd, pProgress, rProgress);
return;
commit dcd592731c632f05f851b87567acb417b53687b1
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Dec 7 08:25:16 2014 +0100
improve formatting
Change-Id: Id652ff18023965cb2bcc7c10520f95a51e8ac15d
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index 84bafad..68f9bd4 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -1423,8 +1423,12 @@ void ScTable::FillAutoSimple(
}
}
- if (rInner == nIEnd) break;
- if (bPositive) ++rInner; else --rInner;
+ if (rInner == nIEnd)
+ break;
+ if (bPositive)
+ ++rInner;
+ else
+ --rInner;
// Progress in inner loop only for expensive cells,
// and even then not individually for each one
More information about the Libreoffice-commits
mailing list