[Libreoffice-commits] .: 2 commits - sc/qa sc/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Sep 17 11:54:27 PDT 2012
sc/qa/unit/rangelst_test.cxx | 33 +++++++++++++++++++++++++++++++++
sc/source/core/tool/rangelst.cxx | 17 +++++++++++++++++
2 files changed, 50 insertions(+)
New commits:
commit 764e7e71038d5ae66061f44bc0cd51ce33ae96ed
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Mon Sep 17 17:58:27 2012 +0200
hopefully a corect way to deal with deleting rows and cols, fdo#54842
Change-Id: I4ec1a8225ae3c84352643876065fb4cc7073b9f4
diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index e81ec82..c6b3bfc 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -417,6 +417,23 @@ bool ScRangeList::UpdateReference(
SCTAB nTab2;
rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 );
+ if(eUpdateRefMode == URM_INSDEL)
+ {
+ // right now this only works for nTab1 == nTab2
+ if(nTab1 == nTab2)
+ {
+ if(nDx < 0)
+ {
+ DeleteArea(nCol1+nDx, nRow1, nTab1, nCol1-1, nRow1, nTab2);
+ }
+ if(nDy < 0)
+ {
+ DeleteArea(nCol1, nRow1+nDy, nTab1, nCol1, nRow1-1, nTab2);
+ }
+ SAL_WARN_IF(nDx < 0 && nDy < 0, "sc", "nDx and nDy are negative, check why");
+ }
+ }
+
vector<ScRange*>::iterator itr = maRanges.begin(), itrEnd = maRanges.end();
for (; itr != itrEnd; ++itr)
{
commit f165111cf4f62353a674bd3497d8cf4a0480a3ab
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Mon Sep 17 16:07:19 2012 +0200
one more test for ScRangeList::DeleteArea
Change-Id: I42d31f6653990a81eff815d3d0feffad84b1379e
diff --git a/sc/qa/unit/rangelst_test.cxx b/sc/qa/unit/rangelst_test.cxx
index 2901965..41d4590 100644
--- a/sc/qa/unit/rangelst_test.cxx
+++ b/sc/qa/unit/rangelst_test.cxx
@@ -22,11 +22,16 @@ public:
void testDeleteArea_4Ranges();
void testDeleteArea_2Ranges();
+ void testDeleteArea_2Ranges_Case2();
void testDeleteArea_0Ranges();
+ void testUpdateReference_DeleteRow();
+ void testUpdateReference_DeleteCol();
+
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testDeleteArea_4Ranges);
CPPUNIT_TEST(testDeleteArea_2Ranges);
+ CPPUNIT_TEST(testDeleteArea_2Ranges_Case2);
CPPUNIT_TEST(testDeleteArea_0Ranges);
CPPUNIT_TEST_SUITE_END();
@@ -96,6 +101,21 @@ void Test::testDeleteArea_2Ranges()
}
}
+void Test::testDeleteArea_2Ranges_Case2()
+{
+ ScRangeList aList(ScRange(1,1,0,1,5,0));
+ aList.DeleteArea(0,3,0,MAXCOL,3,0);
+
+ for(SCROW nRow = 1; nRow <= 5; ++nRow)
+ {
+ if(nRow == 3)
+ CPPUNIT_ASSERT(!aList.Intersects(ScRange(1,3,0)));
+ else
+ CPPUNIT_ASSERT(aList.Intersects(ScRange(1,nRow,0)));
+ }
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), aList.GetCellCount());
+}
+
void Test::testDeleteArea_0Ranges()
{
ScRangeList aList(ScRange(1,1,0,3,3,0));
@@ -109,6 +129,19 @@ void Test::testDeleteArea_0Ranges()
CPPUNIT_ASSERT(aList.empty());
}
+void Test::testUpdateReference_DeleteRow()
+{
+ ScRangeList aList(ScRange(1,1,0,4,4,0));
+ bool bUpdated = aList.UpdateReference(URM_INSDEL, m_pDoc, ScRange(0,3,0,MAXCOL,MAXROW,0), 0, -1, 0);
+ CPPUNIT_ASSERT(bUpdated);
+
+}
+
+void Test::testUpdateReference_DeleteCol()
+{
+
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
More information about the Libreoffice-commits
mailing list