From c92aa69bc63ffb2dddbde0bfb3fe80c7de67a06f Mon Sep 17 00:00:00 2001 From: Sarper Akdemir Date: Tue, 11 Jan 2022 02:06:52 +0300 Subject: [PATCH] tdf#146690: pptx export: fix endParaRPr size value for empty paragraphs Fixes paragraphs made from a single new line, not getting the correct sz(text size) value in EndParagraphRunProperties on pptx export Change-Id: I31ebb5735ad392e081aa2f43b0b60a845e4de9c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128265 Tested-by: Jenkins Reviewed-by: Andras Timar --- .../data/endParaRPr-newline-textsize.pptx | Bin 0 -> 13349 bytes oox/qa/unit/export.cxx | 21 ++++++++++++++++++ oox/source/export/drawingml.cxx | 4 ++++ 3 files changed, 25 insertions(+) create mode 100755 oox/qa/unit/data/endParaRPr-newline-textsize.pptx diff --git a/oox/qa/unit/data/endParaRPr-newline-textsize.pptx b/oox/qa/unit/data/endParaRPr-newline-textsize.pptx new file mode 100755 index 0000000000000000000000000000000000000000..109f818ec8a789ba719dc66676b07e6b53d2b9d5 GIT binary patch literal 13349 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 literal 0 HcmV?d00001 diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx index 86656a0f8f68..24090b8e3cb3 100644 --- a/oox/qa/unit/export.cxx +++ b/oox/qa/unit/export.cxx @@ -395,6 +395,27 @@ CPPUNIT_TEST_FIXTURE(Test, testReferToTheme) "75000"); assertXPath(pXmlDoc, "//p:sp[3]/p:txBody/a:p/a:r/a:rPr/a:solidFill/a:schemeClr/a:lumOff", 0); } + +CPPUNIT_TEST_FIXTURE(Test, testTdf146690_endParagraphRunPropertiesNewLinesTextSize) +{ + // Given a PPTX file that contains references to a theme: + OUString aURL + = m_directories.getURLFromSrc(DATA_DIRECTORY) + "endParaRPr-newline-textsize.pptx"; + + // When saving that document: + loadAndSave(aURL, "Impress Office Open XML"); + + std::unique_ptr pStream = parseExportStream(getTempFile(), "ppt/slides/slide1.xml"); + xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get()); + // Then make sure the shape text color is a scheme color: + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 500 + // - Actual : 1800 + // i.e. the endParaRPr 'size' wasn't exported correctly + assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p[1]/a:endParaRPr", "sz", "500"); + assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p[2]/a:endParaRPr", "sz", "500"); + assertXPath(pXmlDoc, "//p:sp[1]/p:txBody/a:p[3]/a:endParaRPr", "sz", "500"); +} } CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 87bbe81bd88a..cb5383104a61 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3142,7 +3142,11 @@ void DrawingML::WriteParagraph( const Reference< XTextContent >& rParagraph, Reference< XPropertySet > xFirstRunPropSet (run, UNO_QUERY); Reference< XPropertySetInfo > xFirstRunPropSetInfo = xFirstRunPropSet->getPropertySetInfo(); if( xFirstRunPropSetInfo->hasPropertyByName("CharHeight") ) + { fFirstCharHeight = xFirstRunPropSet->getPropertyValue("CharHeight").get(); + rnCharHeight = 100 * fFirstCharHeight; + rbOverridingCharHeight = true; + } WriteParagraphProperties(rParagraph, fFirstCharHeight, XML_pPr); bPropertiesWritten = true; }