[Libreoffice-commits] core.git: 3 commits - sc/qa sc/source

Markus Mohrhard markus.mohrhard at googlemail.com
Fri Sep 27 08:43:56 PDT 2013


 sc/qa/unit/helper/qahelper.cxx |    6 ++++
 sc/qa/unit/helper/qahelper.hxx |    2 +
 sc/qa/unit/ucalc.cxx           |   41 ++++++++++++++++++++++++++++++
 sc/qa/unit/ucalc.hxx           |    4 ++
 sc/source/ui/view/tabview2.cxx |   56 +++++++++++++++++++++++++++++++++++------
 5 files changed, 101 insertions(+), 8 deletions(-)

New commits:
commit 93d22efb334ad85fd02deb83ec1baf538cf0cba3
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Fri Sep 27 17:28:47 2013 +0200

    ignore hidden row/columns when navigating, fdo#45020
    
    Change-Id: I597d7dbef07479f66894c7fce5ee21f340b43120

diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index 4566805..bcce76e 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -79,18 +79,38 @@ void moveCursorByProtRule(
     {
         for (SCCOL i = 0; i < nMovX && rCol < MAXCOL; ++i)
         {
-            if (!isCellQualified(pDoc, rCol+1, rRow, nTab, bSelectLocked, bSelectUnlocked))
+            SCCOL nNewUnhiddenCol = rCol + 1;
+            SCCOL nEndCol = 0;
+            while(pDoc->ColHidden(nNewUnhiddenCol, nTab, NULL, &nEndCol))
+            {
+                if(nNewUnhiddenCol >= MAXCOL)
+                    return;
+
+                nNewUnhiddenCol = nEndCol +1;
+            }
+
+            if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
                 break;
-            ++rCol;
+            rCol = nNewUnhiddenCol;
         }
     }
     else if (nMovX < 0)
     {
         for (SCCOL i = 0; i > nMovX && rCol > 0; --i)
         {
-            if (!isCellQualified(pDoc, rCol-1, rRow, nTab, bSelectLocked, bSelectUnlocked))
+            SCCOL nNewUnhiddenCol = rCol - 1;
+            SCCOL nStartCol = 0;
+            while(pDoc->ColHidden(nNewUnhiddenCol, nTab, &nStartCol))
+            {
+                if(nNewUnhiddenCol <= 0)
+                    return;
+
+                nNewUnhiddenCol = nStartCol - 1;
+            }
+
+            if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
                 break;
-            --rCol;
+            rCol = nNewUnhiddenCol;
         }
     }
 
@@ -98,18 +118,38 @@ void moveCursorByProtRule(
     {
         for (SCROW i = 0; i < nMovY && rRow < MAXROW; ++i)
         {
-            if (!isCellQualified(pDoc, rCol, rRow+1, nTab, bSelectLocked, bSelectUnlocked))
+            SCROW nNewUnhiddenRow = rRow + 1;
+            SCROW nEndRow = 0;
+            while(pDoc->RowHidden(nNewUnhiddenRow, nTab, NULL, &nEndRow))
+            {
+                if(nNewUnhiddenRow >= MAXROW)
+                    return;
+
+                nNewUnhiddenRow = nEndRow + 1;
+            }
+
+            if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
                 break;
-            ++rRow;
+            rRow = nNewUnhiddenRow;
         }
     }
     else if (nMovY < 0)
     {
         for (SCROW i = 0; i > nMovY && rRow > 0; --i)
         {
-            if (!isCellQualified(pDoc, rCol, rRow-1, nTab, bSelectLocked, bSelectUnlocked))
+            SCROW nNewUnhiddenRow = rRow - 1;
+            SCROW nStartRow = 0;
+            while(pDoc->RowHidden(nNewUnhiddenRow, nTab, &nStartRow))
+            {
+                if(nNewUnhiddenRow <= 0)
+                    return;
+
+                nNewUnhiddenRow = nStartRow - 1;
+            }
+
+            if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
                 break;
-            --rRow;
+            rRow = nNewUnhiddenRow;
         }
     }
 }
commit 690228ad4dd4cf10ad6292686d4aad8dcc9e2793
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Sep 25 21:40:33 2013 +0200

    add a unit test for fdo#66646
    
    Change-Id: I15bef4e0422261ec473263ac8fc239604146f864

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 4331073..b0b6f32 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4202,6 +4202,27 @@ void Test::testCondFormatInsertRow()
     m_pDoc->DeleteTab(0);
 }
 
+void Test::testMixData()
+{
+    m_pDoc->InsertTab(0, "Test");
+
+    m_pDoc->SetValue(1,0,0,2);
+    m_pDoc->SetValue(0,1,0,3);
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+    copyToClip(m_pDoc, ScRange(0,0,0,1,0,0), &aClipDoc);
+
+    ScDocument aMixDoc(SCDOCMODE_CLIP);
+    copyToClip(m_pDoc, ScRange(0,1,0,1,1,0), &aMixDoc);
+
+    pasteFromClip(m_pDoc, ScRange(0,1,0,1,1,0), &aClipDoc);
+    m_pDoc->MixDocument(ScRange(0,1,0,1,1,0), 1, false, &aMixDoc);
+
+    CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(1,1,0));
+    CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(0,1,0));
+
+    m_pDoc->DeleteTab(0);
+}
+
 void Test::printRange(ScDocument* pDoc, const ScRange& rRange, const char* pCaption)
 {
     SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 698d683..3c46cab 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -224,6 +224,8 @@ public:
     void testSharedFormulasCopyPaste();
     void testFormulaPosition();
 
+    void testMixData();
+
     /**
      * Make sure the sheet streams are invalidated properly.
      */
commit 1e2bbf4bc723a9838bb8786908682ea2dd841866
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Wed Sep 25 20:52:38 2013 +0200

    add test case for fdo#69720
    
    Change-Id: Ib89a596f0e28cacc9ae180d23b9995e524c45b52

diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 8139363..0de8b6b 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -55,6 +55,12 @@ std::ostream& operator<<(std::ostream& rStrm, const ScRangeList& rList)
     return rStrm;
 }
 
+std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
+{
+    rStrm << "Color: R:" << rColor.GetRed() << " G:" << rColor.GetGreen() << " B: << rColor.GetBlue()";
+    return rStrm;
+}
+
 FileFormat aFileFormats[] = {
     { "ods" , "calc8", "", ODS_FORMAT_TYPE },
     { "xls" , "MS Excel 97", "calc_MS_EXCEL_97", XLS_FORMAT_TYPE },
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index 7bcf519..8d0f27d 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -97,6 +97,8 @@ std::ostream& operator<<(std::ostream& rStrm, const ScRange& rRange);
 
 std::ostream& operator<<(std::ostream& rStrm, const ScRangeList& rList);
 
+std::ostream& operator<<(std::ostream& rStrm, const Color& rColor);
+
 // Why is this here and not in osl, and using the already existing file
 // handling APIs? Do we really want to add arbitrary new file handling
 // wrappers here and there (and then having to handle the Android (and
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index e5e6198..4331073 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -56,6 +56,7 @@
 
 #include <basegfx/polygon/b2dpolygon.hxx>
 #include <editeng/boxitem.hxx>
+#include <editeng/brushitem.hxx>
 
 #include <svx/svdograf.hxx>
 #include <svx/svdpage.hxx>
@@ -3857,6 +3858,25 @@ void Test::testDeleteCol()
     pDoc->DeleteTab(0);
 }
 
+void Test::testDeleteArea()
+{
+    ScDocument* pDoc = getDocShell().GetDocument();
+    pDoc->InsertTab(0, "Test");
+
+    pDoc->SetValue(0,0,0,3.2);
+    pDoc->ApplyAttr(0,0,0,SvxBrushItem(Color(COL_LIGHTRED), ATTR_BACKGROUND));
+
+    ScMarkData aMark;
+    ScRange aRange(0,0,0,0,0,0);
+    aMark.SetMarkArea(aRange);
+    pDoc->DeleteArea(0,0,0,0,aMark, IDF_CONTENTS);
+    const SfxPoolItem* pItem = pDoc->GetAttr(0,0,0,ATTR_BACKGROUND);
+    CPPUNIT_ASSERT(pItem);
+    CPPUNIT_ASSERT_EQUAL(Color(COL_LIGHTRED), static_cast<const SvxBrushItem*>(pItem)->GetColor());
+
+    pDoc->DeleteTab(0);
+}
+
 void Test::testAnchoredRotatedShape()
 {
     OUString aTabName("TestTab");
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index e97bb8d..698d683 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -267,6 +267,7 @@ public:
     void testShiftCells();
     void testDeleteRow();
     void testDeleteCol();
+    void testDeleteArea();
     void testAnchoredRotatedShape();
     void testCellTextWidth();
     void testEditTextIterator();
@@ -367,6 +368,7 @@ public:
     CPPUNIT_TEST(testShiftCells);
     CPPUNIT_TEST(testDeleteRow);
     CPPUNIT_TEST(testDeleteCol);
+    CPPUNIT_TEST(testDeleteArea);
     CPPUNIT_TEST(testAnchoredRotatedShape);
     CPPUNIT_TEST(testCellTextWidth);
     CPPUNIT_TEST(testEditTextIterator);


More information about the Libreoffice-commits mailing list