Blame SOURCES/0269-sc-lok-avoid-placeholder-row-when-providing-all-head.patch

f325b2
From 177773ea3cb22e81fa30dd9ffc89aa7e8a8fa4f1 Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Tue, 3 Nov 2015 16:26:46 +0100
f325b2
Subject: [PATCH 269/398] sc lok: avoid placeholder row when providing all
f325b2
 headers
f325b2
f325b2
In case the logic visible area is known, info is provided only about the
f325b2
visible headers. Given that only relative sizes (no absolute positions)
f325b2
are provided, a placeholder row/col is added to the result that contains
f325b2
the total size of the skipped items.
f325b2
f325b2
These placeholder items are not needed when providing all headers, so
f325b2
don't emit them.
f325b2
f325b2
Change-Id: I48ccb73554313f4d2bb420e4402995719b0f9f7d
f325b2
(cherry picked from commit 788cec0a60dcfce6d86c820e9d0f7a1eb634f7bf)
f325b2
---
f325b2
 desktop/qa/desktop_lib/test_desktop_lib.cxx | 32 +++++++++++++++++++++++++++++
f325b2
 sc/source/ui/view/tabview.cxx               |  4 ++--
f325b2
 2 files changed, 34 insertions(+), 2 deletions(-)
f325b2
f325b2
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
index c14261e82db6..29b0aedd4dfa 100644
f325b2
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
@@ -66,6 +66,7 @@ public:
f325b2
     void testSaveAs();
f325b2
     void testSaveAsCalc();
f325b2
     void testPasteWriter();
f325b2
+    void testRowColumnHeaders();
f325b2
 
f325b2
     CPPUNIT_TEST_SUITE(DesktopLOKTest);
f325b2
     CPPUNIT_TEST(testGetStyles);
f325b2
@@ -78,6 +79,7 @@ public:
f325b2
     CPPUNIT_TEST(testSaveAs);
f325b2
     CPPUNIT_TEST(testSaveAsCalc);
f325b2
     CPPUNIT_TEST(testPasteWriter);
f325b2
+    CPPUNIT_TEST(testRowColumnHeaders);
f325b2
     CPPUNIT_TEST_SUITE_END();
f325b2
 
f325b2
     uno::Reference<lang::XComponent> mxComponent;
f325b2
@@ -346,6 +348,36 @@ void DesktopLOKTest::testPasteWriter()
f325b2
     comphelper::LibreOfficeKit::setActive(false);
f325b2
 }
f325b2
 
f325b2
+void DesktopLOKTest::testRowColumnHeaders()
f325b2
+{
f325b2
+    LibLODocument_Impl* pDocument = loadDoc("search.ods");
f325b2
+    boost::property_tree::ptree aTree;
f325b2
+    char* pJSON = pDocument->m_pDocumentClass->getCommandValues(pDocument, ".uno:ViewRowColumnHeaders");
f325b2
+    std::stringstream aStream(pJSON);
f325b2
+    free(pJSON);
f325b2
+    CPPUNIT_ASSERT(!aStream.str().empty());
f325b2
+
f325b2
+    boost::property_tree::read_json(aStream, aTree);
f325b2
+    for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("rows"))
f325b2
+    {
f325b2
+        sal_Int32 nSize = OString(rValue.second.get<std::string>("size").c_str()).toInt32();
f325b2
+        CPPUNIT_ASSERT(nSize > 0);
f325b2
+        OString aText(rValue.second.get<std::string>("text").c_str());
f325b2
+        // This failed, as the first item did not contain the text of the first row.
f325b2
+        CPPUNIT_ASSERT_EQUAL(OString("1"), aText);
f325b2
+        break;
f325b2
+    }
f325b2
+
f325b2
+    for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("columns"))
f325b2
+    {
f325b2
+        sal_Int32 nSize = OString(rValue.second.get<std::string>("size").c_str()).toInt32();
f325b2
+        CPPUNIT_ASSERT(nSize > 0);
f325b2
+        OString aText(rValue.second.get<std::string>("text").c_str());
f325b2
+        CPPUNIT_ASSERT_EQUAL(OString("A"), aText);
f325b2
+        break;
f325b2
+    }
f325b2
+}
f325b2
+
f325b2
 CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
f325b2
 
f325b2
 CPPUNIT_PLUGIN_IMPLEMENT();
f325b2
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
f325b2
index ab77b47bed0c..8edec1b22f3a 100644
f325b2
--- a/sc/source/ui/view/tabview.cxx
f325b2
+++ b/sc/source/ui/view/tabview.cxx
f325b2
@@ -2332,7 +2332,7 @@ OUString ScTabView::getRowColumnHeaders(const Rectangle& rRectangle)
f325b2
         }
f325b2
         if (!bSkip)
f325b2
         {
f325b2
-            if (aRows.empty())
f325b2
+            if (aRows.empty() && nTotal > 0)
f325b2
             {
f325b2
                 // The sizes are relative sizes, so include the total skipped size before the real items.
f325b2
                 boost::property_tree::ptree aRow;
f325b2
@@ -2369,7 +2369,7 @@ OUString ScTabView::getRowColumnHeaders(const Rectangle& rRectangle)
f325b2
         }
f325b2
         if (!bSkip)
f325b2
         {
f325b2
-            if (aCols.empty())
f325b2
+            if (aCols.empty() && nTotal > 0)
f325b2
             {
f325b2
                 boost::property_tree::ptree aCol;
f325b2
                 aCol.put("size", OString::number(long((nTotalPixels + 0.5) / aViewData.GetPPTX())).getStr());
f325b2
-- 
f325b2
2.12.0
f325b2