[Libreoffice-commits] core.git: Branch 'feature/cib_contract57c' - sw/qa sw/source

Michael Stahl (via logerrit) logerrit at kemper.freedesktop.org
Tue Apr 30 14:08:25 UTC 2019


 sw/qa/extras/layout/data/tdf122607_leerzeile.odt |binary
 sw/qa/extras/layout/layout.cxx                   |   50 +++++++++++++++++++++++
 sw/source/uibase/uno/unotxdoc.cxx                |    7 +--
 3 files changed, 54 insertions(+), 3 deletions(-)

New commits:
commit 70c54e1503e2132fa9be908c9fda76f6902b7d7c
Author:     Michael Stahl <Michael.Stahl at cib.de>
AuthorDate: Mon Apr 29 17:40:45 2019 +0200
Commit:     Michael Stahl <Michael.Stahl at cib.de>
CommitDate: Tue Apr 30 16:07:14 2019 +0200

    tdf#122607 sw: restore CalcLayout() call in getRendererCount()
    
    Effectively revert commit 1ecca673b40fedc53db125e332b087d1c120a254.
    
    There are some documents that aren't formatted correctly.
    
    (cherry picked from commit 5879351aeb1935e2bf86fda59703f7d49fdeb6ed)
    
    Change-Id: I4b0cf6313c249a0ed916c2630cd5194d809bfb48

diff --git a/sw/qa/extras/layout/data/tdf122607_leerzeile.odt b/sw/qa/extras/layout/data/tdf122607_leerzeile.odt
new file mode 100644
index 000000000000..9819a229344a
Binary files /dev/null and b/sw/qa/extras/layout/data/tdf122607_leerzeile.odt differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 615061572ec1..a107d6472aa3 100755
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -34,6 +34,7 @@ public:
     void testTdf119875();
     void testTdf116989();
     void testTdf122607();
+    void testTdf122607_regression();
     void testTdf123898();
 
     CPPUNIT_TEST_SUITE(SwLayoutWriter);
@@ -53,6 +54,7 @@ public:
     CPPUNIT_TEST(testTdf119875);
     CPPUNIT_TEST(testTdf116989);
     CPPUNIT_TEST(testTdf122607);
+    CPPUNIT_TEST(testTdf122607_regression);
     CPPUNIT_TEST(testTdf123898);
     CPPUNIT_TEST_SUITE_END();
 
@@ -323,6 +325,54 @@ void SwLayoutWriter::testTdf122607()
                 "nWidth", "428");
 }
 
+void SwLayoutWriter::testTdf122607_regression()
+{
+    discardDumpedLayout();
+    if (mxComponent.is())
+        mxComponent->dispose();
+
+    auto const pName("tdf122607_leerzeile.odt");
+
+    OUString const url(m_directories.getURLFromSrc(DATA_DIRECTORY)
+                       + OUString::createFromAscii(pName));
+
+    // note: must set Hidden property, so that SfxFrameViewWindow_Impl::Resize()
+    // does *not* forward initial VCL Window Resize and thereby triggers a
+    // layout which does not happen on soffice --convert-to pdf.
+    std::vector<beans::PropertyValue> aFilterOptions = {
+        { beans::PropertyValue("Hidden", -1, uno::Any(true), beans::PropertyState_DIRECT_VALUE) },
+    };
+
+    std::cout << pName << ":\n";
+
+    // inline the loading because currently properties can't be passed...
+    mxComponent = loadFromDesktop(url, "com.sun.star.text.TextDocument",
+                                  comphelper::containerToSequence(aFilterOptions));
+
+    CPPUNIT_ASSERT(mxComponent.is());
+
+    uno::Sequence<beans::PropertyValue> props(comphelper::InitPropertySequence({
+        { "FilterName", uno::Any(OUString("writer_pdf_Export")) },
+    }));
+    utl::TempFile aTempFile;
+    uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
+    xStorable->storeToURL(aTempFile.GetURL(), props);
+
+    xmlDocPtr pXmlDoc = parseLayoutDump();
+    // somehow these 2 rows overlapped in the PDF unless CalcLayout() runs
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[1]/infos/bounds", "mbFixSize",
+                "false");
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[1]/infos/bounds", "top", "2977");
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[1]/infos/bounds", "height", "241");
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[2]/infos/bounds", "mbFixSize",
+                "true");
+    // this was 3034, causing the overlap
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[2]/infos/bounds", "top", "3218");
+    assertXPath(pXmlDoc, "/root/page[1]/anchored/fly/tab[1]/row[2]/infos/bounds", "height", "164");
+
+    aTempFile.EnableKillingFile();
+}
+
 void SwLayoutWriter::testTdf123898()
 {
     createDoc("tdf123898.odt");
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index d2d512fd8c6f..f351dafdc4ec 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -2622,9 +2622,10 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount(
             // should be set for printing as well ...
             pViewShell->SetPDFExportOption( true );
 
-            // tdf#122607 Re-layout the doc. Calling CalcLayout here is not enough, as it depends
-            // on the currently visible area which is 0 when doing headless conversion.
-            pViewShell->Reformat();
+            // there is some redundancy between those two function calls, but right now
+            // there is no time to sort this out.
+            //TODO: check what exactly needs to be done and make just one function for that
+            pViewShell->CalcLayout();
             pViewShell->CalcPagesForPrint( pViewShell->GetPageCount() );
 
 


More information about the Libreoffice-commits mailing list