oox/source/export/drawingml.cxx    |   15 +++++++++++----
 sd/qa/unit/data/pptx/tdf151134.odp |binary
 sd/qa/unit/export-tests-ooxml1.cxx |    9 +++++++++
 3 files changed, 20 insertions(+), 4 deletions(-)

New commits:
commit 1d6547c588fefad68d5f69fd09323348eb24788a
Author:     Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
AuthorDate: Fri Aug 18 13:42:23 2023 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Aug 21 10:48:06 2023 +0200

    tdf#151134 Always write inset properties when exporting placeholder shapes
    
    The default value works for text boxes, but not for these special
    presentation placeholder objects - here the values need to be written
    explicitly.
    
    Change-Id: Id606bd5e6b63dee2fd3b385435ce13ecec63b5f1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155838
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de>
    (cherry picked from commit 1524a1915d79c4fc598311114eaea87cde9be9aa)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155780
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index d4996a6eb9cf..8360a20908b7 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -4012,6 +4012,9 @@ void DrawingML::WriteText(const Reference<XInterface>& 
rXIface, bool bBodyPr, bo
             sVertOverflow = "clip";
         }
 
+        // tdf#151134 When writing placeholder shapes, inset must be 
explicitly specified
+        bool bRequireInset = GetProperty(rXPropSet, "IsPresentationObject") && 
rXPropSet->getPropertyValue("IsPresentationObject").get<bool>();
+
         mpFS->startElementNS( (nXmlNamespace ? nXmlNamespace : XML_a), 
XML_bodyPr,
                                XML_numCol, 
sax_fastparser::UseIf(OString::number(nCols), nCols > 0),
                                XML_spcCol, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nColSpacing)),
 nCols > 0 && nColSpacing >= 0),
@@ -4019,10 +4022,14 @@ void DrawingML::WriteText(const Reference<XInterface>& 
rXIface, bool bBodyPr, bo
                                XML_horzOverflow, sHorzOverflow,
                                XML_vertOverflow, sVertOverflow,
                                XML_fromWordArt, sax_fastparser::UseIf("1", 
bFromWordArt),
-                               XML_lIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nLeft)), 
nLeft != constDefaultLeftRightInset),
-                               XML_rIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nRight)), 
nRight != constDefaultLeftRightInset),
-                               XML_tIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nTop)), 
nTop != constDefaultTopBottomInset),
-                               XML_bIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nBottom)),
 nBottom != constDefaultTopBottomInset),
+                               XML_lIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nLeft)),
+                                                               bRequireInset 
|| nLeft != constDefaultLeftRightInset),
+                               XML_rIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nRight)),
+                                                               bRequireInset 
|| nRight != constDefaultLeftRightInset),
+                               XML_tIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nTop)),
+                                                               bRequireInset 
|| nTop != constDefaultTopBottomInset),
+                               XML_bIns, 
sax_fastparser::UseIf(OString::number(oox::drawingml::convertHmmToEmu(nBottom)),
+                                                               bRequireInset 
|| nBottom != constDefaultTopBottomInset),
                                XML_anchor, sAnchor,
                                XML_anchorCtr, sax_fastparser::UseIf("1", 
bAnchorCtr),
                                XML_vert, sWritingMode,
diff --git a/sd/qa/unit/data/pptx/tdf151134.odp 
b/sd/qa/unit/data/pptx/tdf151134.odp
new file mode 100644
index 000000000000..56ea86a3144c
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf151134.odp differ
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx 
b/sd/qa/unit/export-tests-ooxml1.cxx
index 9140eddf143c..afcbc1c542d6 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -1664,6 +1664,15 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf137675)
                 "none");
 }
 
+CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf151134)
+{
+    createSdImpressDoc("pptx/tdf151134.odp");
+    save("Impress Office Open XML");
+
+    xmlDocUniquePtr pXmlDoc = parseExport("ppt/slides/slide1.xml");
+    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp[1]/p:txBody/a:bodyPr", 
"lIns", "91440");
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to