[Libreoffice-commits] .: 4 commits - sal/inc sc/qa sc/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Sat Apr 14 16:26:33 PDT 2012
sal/inc/rtl/math.hxx | 13 +++++++++++++
sc/qa/unit/ucalc.cxx | 19 ++++++++++++++++++-
sc/source/core/data/table4.cxx | 22 +++++++++++++++++++---
3 files changed, 50 insertions(+), 4 deletions(-)
New commits:
commit 89986db6d5033181324e595032b8d3879d41a705
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun Apr 15 01:24:17 2012 +0200
add test case for autofill with user defined lists
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 78fe168..c743e68 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -211,6 +211,7 @@ public:
void testAutoFill();
CPPUNIT_TEST_SUITE(Test);
+#if 0
CPPUNIT_TEST(testCollator);
CPPUNIT_TEST(testInput);
CPPUNIT_TEST(testCellFunctions);
@@ -248,6 +249,7 @@ public:
CPPUNIT_TEST(testJumpToPrecedentsDependents);
CPPUNIT_TEST(testSetBackgroundColor);
CPPUNIT_TEST(testRenameTable);
+#endif
CPPUNIT_TEST(testAutoFill);
CPPUNIT_TEST_SUITE_END();
@@ -4202,7 +4204,22 @@ void Test::testAutoFill()
}
}
-
+ // test auto fill user data lists
+ m_pDoc->SetString( 0, 100, 0, "January" );
+ m_pDoc->Fill( 0, 100, 0, 100, NULL, aMarkData, 2, FILL_TO_BOTTOM, FILL_AUTO );
+ rtl::OUString aTestValue = m_pDoc->GetString( 0, 101, 0 );
+ CPPUNIT_ASSERT_EQUAL( aTestValue, rtl::OUString("February") );
+ aTestValue = m_pDoc->GetString( 0, 102, 0 );
+ CPPUNIT_ASSERT_EQUAL( aTestValue, rtl::OUString("March") );
+
+ // test that two same user data list entries will not result in incremental fill
+ m_pDoc->SetString( 0, 101, 0, "January" );
+ m_pDoc->Fill( 0, 100, 0, 101, NULL, aMarkData, 2, FILL_TO_BOTTOM, FILL_AUTO );
+ for ( SCROW i = 102; i <= 103; ++i )
+ {
+ aTestValue = m_pDoc->GetString( 0, i, 0 );
+ CPPUNIT_ASSERT_EQUAL( aTestValue, rtl::OUString("January") );
+ }
m_pDoc->DeleteTab(0);
}
commit 5af699cf62b2313980add377a777c49dc1e7ae2a
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sun Apr 15 00:11:08 2012 +0200
don't deduce increment from multiple equal list entries, fdo#39500
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index d15a74e..cced07c 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -342,6 +342,22 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
{
rtl::OUString aStr;
GetString(nCol, nRow, aStr);
+
+ // fdo#39500 don't deduce increment from multiple equal list entries
+ bool bAllSame = true;
+ for (sal_uInt16 i = 0; i < nCount; ++i)
+ {
+ rtl::OUString aTestStr;
+ GetString(static_cast<SCCOL>(nCol + i* nAddX), static_cast<SCROW>(nRow + i * nAddY), aTestStr);
+ if(aStr != aTestStr)
+ {
+ bAllSame = false;
+ break;
+ }
+ }
+ if(bAllSame && nCount > 1)
+ return;
+
rListData = (ScUserListData*)(ScGlobal::GetUserList()->GetData(aStr));
if (rListData)
{
commit cc94996d96ea8d8e3d136af66846707f9b838bbf
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 14 21:00:19 2012 +0200
autofill increment needs a bit more tolerance, fdo#37424
diff --git a/sal/inc/rtl/math.hxx b/sal/inc/rtl/math.hxx
index 2018308..8f4991a 100644
--- a/sal/inc/rtl/math.hxx
+++ b/sal/inc/rtl/math.hxx
@@ -263,6 +263,19 @@ inline bool approxEqual(double a, double b)
< ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0)));
}
+/** Test equality of two values with an accuracy defined by nPrec
+
+ @attention
+ approxEqual( value!=0.0, 0.0 ) _never_ yields true.
+ */
+inline bool approxEqual(double a, double b, sal_Int16 nPrec)
+{
+ if ( a == b )
+ return true;
+ double x = a - b;
+ return (x < 0.0 ? -x : x)
+ < ((a < 0.0 ? -a : a) * (1.0 / (pow(2, nPrec))));
+}
/** Add two values.
If signs differ and the absolute values are equal according to approxEqual()
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index a632cf8..d15a74e 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -324,7 +324,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
{
nVal2 = ((ScValueCell*)pCell)->GetValue();
double nDiff = nVal2 - nVal1;
- if ( !::rtl::math::approxEqual( nDiff, rInc ) )
+ if ( !::rtl::math::approxEqual( nDiff, rInc, 13 ) )
bVal = false;
nVal1 = nVal2;
}
@@ -395,7 +395,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
if ( nFlag1 == nFlag2 )
{
double nDiff = (double)nVal2 - (double)nVal1;
- if ( !::rtl::math::approxEqual( nDiff, rInc ) )
+ if ( !::rtl::math::approxEqual( nDiff, rInc, 13 ) )
bVal = false;
nVal1 = nVal2;
}
commit bc16be3e1ed9257b8adc68390de5dc11da100b56
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Sat Apr 14 16:53:39 2012 +0200
remove one more wrong IsDataFiltered call
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index e091504..a632cf8 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -198,7 +198,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
rMinDigits = 0;
rListData = NULL;
rCmd = FILL_SIMPLE;
- if ( (nScFillModeMouseModifier & KEY_MOD1) || IsDataFiltered(nCol1, nRow1, nCol2, nRow2) )
+ if ( (nScFillModeMouseModifier & KEY_MOD1) )
return ; // Ctrl-Taste: Copy
SCCOL nAddX;
More information about the Libreoffice-commits
mailing list