editeng/source/xml/xmltxtexp.cxx                       |    2 
 include/oox/drawingml/shape.hxx                        |    5 
 include/oox/ppt/pptshape.hxx                           |    3 
 include/svx/svdobj.hxx                                 |    4 
 include/svx/svdpage.hxx                                |    2 
 include/xmloff/xmlexp.hxx                              |    2 
 offapi/com/sun/star/presentation/Shape.idl             |    8 
 oox/inc/drawingml/textbody.hxx                         |   14 +
 oox/source/drawingml/shape.cxx                         |   21 +
 oox/source/drawingml/shapecontext.cxx                  |    2 
 oox/source/drawingml/textbody.cxx                      |   52 +++
 oox/source/export/shapes.cxx                           |    1 
 oox/source/ppt/pptshape.cxx                            |   65 ++++
 oox/source/token/properties.txt                        |    1 
 sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods |  236 ++++++++++++-----
 sc/qa/unit/uicalc/data/tdf140027.ods                   |binary
 sc/qa/unit/uicalc/uicalc2.cxx                          |   24 +
 sc/source/core/data/attarray.cxx                       |    8 
 sc/source/core/tool/interpr1.cxx                       |    6 
 sd/inc/sdpage.hxx                                      |    6 
 sd/qa/unit/data/pptx/tdf163239.pptx                    |binary
 sd/qa/unit/export-tests-ooxml4.cxx                     |   66 ++++
 sd/qa/unit/import-tests.cxx                            |   44 +++
 sd/qa/unit/import-tests2.cxx                           |    8 
 sd/qa/unit/tiledrendering/data/tdf166882.odp           |binary
 sd/qa/unit/tiledrendering/tiledrendering.cxx           |  135 +++++----
 sd/source/core/sdpage.cxx                              |   53 +++
 sd/source/filter/eppt/pptx-epptooxml.cxx               |   24 +
 sd/source/ui/inc/unoprnms.hxx                          |    1 
 sd/source/ui/unoidl/unoobj.cxx                         |   46 +++
 sd/source/ui/unoidl/unoobj.hxx                         |    3 
 sd/source/ui/view/NotesPanelView.cxx                   |    2 
 sd/source/ui/view/drawview.cxx                         |    2 
 sd/source/ui/view/outlnvsh.cxx                         |    4 
 sd/source/ui/view/outlview.cxx                         |    4 
 sd/source/ui/view/sdview.cxx                           |    2 
 svx/source/svdraw/svdobj.cxx                           |    5 
 svx/source/svdraw/svdpage.cxx                          |    6 
 xmloff/source/core/xmlexp.cxx                          |    5 
 xmloff/source/core/xmlimp.cxx                          |    5 
 40 files changed, 705 insertions(+), 172 deletions(-)

New commits:
commit 520a744d3024e96e40514cd656e324eb64feb37d
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Fri Aug 15 10:32:20 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:11 2025 +0200

    Related: tdf#111927 - PPTX: fix placeholder title text becomes small
    
    after clicking in&out
    
    Add some clean-up for 78e0581ec09078ea5f344bae66d07978396bb23e
    
    Change-Id: I48958d77ceaa79de83df54538bc4820f119c022c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189663
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    Tested-by: Jenkins
    (cherry picked from commit a7a02a742237d739e7b6b25fcfb9dbe2d4675c28)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189839
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/oox/inc/drawingml/textbody.hxx b/oox/inc/drawingml/textbody.hxx
index e0683c606a8b..3f4cd0cb7f55 100644
--- a/oox/inc/drawingml/textbody.hxx
+++ b/oox/inc/drawingml/textbody.hxx
@@ -96,6 +96,7 @@ public:
                             const TextCharacterProperties& 
rTextStyleProperties,
                             const TextListStylePtr& pMasterTextListStylePtr) 
const;
 
+    /// throws exception
     void                ApplyMasterTextStyle(
                             const ::oox::core::XmlFilterBase& rFilterBase,
                             const css::uno::Reference< css::style::XStyle > & 
aXStyle,
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 5b80d96e0add..a5a0c57aed8f 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -168,49 +168,37 @@ void PPTShape::setTextMasterStyles( const SlidePersist& 
rSlidePersist, const oox
     {
         Reference< style::XStyleFamiliesSupplier > 
aXStyleFamiliesSupplier(rFilterBase.getModel(), UNO_QUERY_THROW);
         Reference< container::XNameAccess > 
aXNameAccess(aXStyleFamiliesSupplier->getStyleFamilies());
+
+        if (!aXNameAccess.is())
+            return;
+
         Reference< container::XNamed > aXNamed(rSlidePersist.getPage(), 
UNO_QUERY_THROW);
+        OUString aFamily = aXNamed->getName();
+
+        if (!aXNameAccess->hasByName(aFamily))
+            return;
 
-        if (aXNameAccess.is())
+        Reference< container::XNameAccess > xFamilies;
+        if (aXNameAccess->getByName(aFamily) >>= xFamilies)
         {
             OUString aStyle;
-            OUString aFamily;
-
             if (sType == u"com.sun.star.presentation.TitleTextShape") // title 
style
-            {
                 aStyle = u"title"_ustr;
-                aFamily = aXNamed->getName();
-            }
             else if (sType == u"com.sun.star.presentation.SubtitleShape") // 
subtitle
-            {
                 aStyle = u"subtitle"_ustr;
-                aFamily = aXNamed->getName();
-            }
             else if (sType == u"com.sun.star.presentation.OutlinerShape") // 
body style
-            {
                 aStyle = u"outline1"_ustr;
-                aFamily = aXNamed->getName();
-            }
             else if (sType == u"com.sun.star.presentation.NotesShape") // 
notes style
-            {
                 aStyle = u"title"_ustr;
-                aFamily = aXNamed->getName();
-            }
 
-            Reference< container::XNameAccess > xFamilies;
-            if (aXNameAccess->hasByName(aFamily))
+            if (!xFamilies->hasByName(aStyle))
+                return;
+
+            Reference< style::XStyle > aXStyle;
+            if (xFamilies->getByName(aStyle) >>= aXStyle)
             {
-                if (aXNameAccess->getByName(aFamily) >>= xFamilies)
-                {
-                    if (xFamilies->hasByName(aStyle))
-                    {
-                        Reference< style::XStyle > aXStyle;
-                        if (xFamilies->getByName(aStyle) >>= aXStyle)
-                        {
-                            TextCharacterProperties aCharStyleProperties;
-                            getTextBody()->ApplyMasterTextStyle(rFilterBase, 
aXStyle, aCharStyleProperties, mpMasterTextListStyle);
-                        }
-                    }
-                }
+                TextCharacterProperties aCharStyleProperties;
+                getTextBody()->ApplyMasterTextStyle(rFilterBase, aXStyle, 
aCharStyleProperties, mpMasterTextListStyle);
             }
         }
     }
commit 2f2a4c0649808c20411388848a22ae1ac8e2508d
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Thu Aug 14 17:30:48 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:11 2025 +0200

    tdf#140027 - sc fix inserting rows before pivot table in row 1
    
    Do not copy flags except Scenario when we insert a new row before/
    after. Also remove hard attributes when we insert a very new first
    row on the sheet. (Same what MSO does.)
    
    Change-Id: Ia825683ab221f445b1c9977006b3f1cdffb2ea24
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189614
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    (cherry picked from commit f85188809d28dfe01ac8ed8b93e62e17f59773d2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189717
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/sc/qa/unit/uicalc/data/tdf140027.ods 
b/sc/qa/unit/uicalc/data/tdf140027.ods
new file mode 100644
index 000000000000..35cc3089dbfa
Binary files /dev/null and b/sc/qa/unit/uicalc/data/tdf140027.ods differ
diff --git a/sc/qa/unit/uicalc/uicalc2.cxx b/sc/qa/unit/uicalc/uicalc2.cxx
index 83bf9fcd36f5..a8a8a54edab6 100644
--- a/sc/qa/unit/uicalc/uicalc2.cxx
+++ b/sc/qa/unit/uicalc/uicalc2.cxx
@@ -1649,6 +1649,30 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf154044)
     }
 }
 
+CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf140027)
+{
+    // testing the correct import of autofilter from XLSB
+    createScDoc("tdf140027.ods");
+
+    goToCell(u"A1"_ustr);
+
+    ScDocShell* pDocSh = getScDocShell();
+    lcl_AssertCurrentCursorPosition(*pDocSh, u"A1");
+
+    dispatchCommand(mxComponent, u".uno:SelectRow"_ustr, {});
+    dispatchCommand(mxComponent, u".uno:InsertRowsBefore"_ustr, {});
+
+    // check we have no any unnecessary flags
+    ScDocument* pDoc = getScDoc();
+    auto nFlag = pDoc->GetAttr(0, 0, 1, ATTR_MERGE_FLAG)->GetValue();
+    CPPUNIT_ASSERT_EQUAL(ScMF::NONE, nFlag);
+
+    const ScPatternAttr* pPattern = pDoc->GetPattern(1, 0, 1);
+    const ScPatternAttr aDefPattern = 
pPattern->getCellAttributeHelper().getDefaultCellAttribute();
+    // check that the default pattern is not changed
+    CPPUNIT_ASSERT(ScPatternAttr::areSame(pPattern, &aDefPattern));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 852db370cf54..044ef2102916 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -2255,7 +2255,13 @@ void ScAttrArray::InsertRow( SCROW nStartRow, SCSIZE 
nSize )
 
     // Don't duplicate the merge flags in the inserted row.
     // #i108488# ScMF::Scenario has to be allowed.
-    RemoveFlags( nStartRow, nStartRow+nSize-1, ScMF::Hor | ScMF::Ver | 
ScMF::Auto | ScMF::Button );
+    RemoveFlags(nStartRow, nStartRow + nSize - 1, (ScMF::All & 
~ScMF::Scenario));
+    // tdf#140027: set new default attributes if we insert very first rows.
+    if (nStartRow == 0)
+    {
+        const CellAttributeHolder 
aDefHolder(&rDocument.getCellAttributeHelper().getDefaultCellAttribute());
+        SetPatternArea(nStartRow, nStartRow + nSize - 1, aDefHolder);
+    }
 }
 
 void ScAttrArray::DeleteRow( SCROW nStartRow, SCSIZE nSize )
commit 5ba87dd8dfb0fcc450581b372cde5257d173dcf6
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Tue Aug 12 19:16:55 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:11 2025 +0200

    tdf#111927 - PPTX: fix placeholder title text becomes small after
    
    clicking in&out
    
    Set the first paragraph of text styles for placeholder shapes.
    
    Change-Id: Ib44a5b2752a1e9aaad4fe7333c0652f0578db7f9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189445
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    (cherry picked from commit 78e0581ec09078ea5f344bae66d07978396bb23e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189563
    Reviewed-by: Justin Luth <jl...@mail.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/include/oox/ppt/pptshape.hxx b/include/oox/ppt/pptshape.hxx
index 02c60a69a759..a20c8d5487d6 100644
--- a/include/oox/ppt/pptshape.hxx
+++ b/include/oox/ppt/pptshape.hxx
@@ -55,6 +55,9 @@ class PPTShape final : public oox::drawingml::Shape
 
     bool IsPlaceHolderCandidate(const SlidePersist& rSlidePersist) const;
 
+    void setTextMasterStyles(const SlidePersist& rSlidePersist, const 
oox::core::XmlFilterBase& rFilterBase,
+        const std::u16string_view& sType);
+
 public:
 
     PPTShape( const oox::ppt::ShapeLocation eShapeLocation,
diff --git a/oox/inc/drawingml/textbody.hxx b/oox/inc/drawingml/textbody.hxx
index d059ed501306..e0683c606a8b 100644
--- a/oox/inc/drawingml/textbody.hxx
+++ b/oox/inc/drawingml/textbody.hxx
@@ -31,6 +31,10 @@ namespace com::sun::star::text {
     class XTextCursor;
 }
 
+namespace com::sun::star::style {
+    class XStyle;
+}
+
 namespace oox::core { class XmlFilterBase; }
 
 namespace oox::drawingml {
@@ -91,6 +95,12 @@ public:
                             const css::uno::Reference < css::text::XText > & 
xText,
                             const TextCharacterProperties& 
rTextStyleProperties,
                             const TextListStylePtr& pMasterTextListStylePtr) 
const;
+
+    void                ApplyMasterTextStyle(
+                            const ::oox::core::XmlFilterBase& rFilterBase,
+                            const css::uno::Reference< css::style::XStyle > & 
aXStyle,
+                            const TextCharacterProperties& 
rTextStyleProperties,
+                            const TextListStylePtr& pMasterTextListStylePtr) 
const;
 private:
     TextParagraphVector maParagraphs;
     TextBodyProperties  maTextProperties;
diff --git a/oox/source/drawingml/textbody.cxx 
b/oox/source/drawingml/textbody.cxx
index 9e1c68b5206f..34a80115a231 100644
--- a/oox/source/drawingml/textbody.cxx
+++ b/oox/source/drawingml/textbody.cxx
@@ -19,6 +19,7 @@
 
 #include <drawingml/textbody.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/style/XStyle.hpp>
 #include <drawingml/textparagraph.hxx>
 #include <oox/helper/propertyset.hxx>
 #include <oox/token/properties.hxx>
@@ -166,6 +167,42 @@ void TextBody::ApplyStyleEmpty(
     }
 }
 
+void TextBody::ApplyMasterTextStyle(
+    const ::oox::core::XmlFilterBase& rFilterBase,
+    const css::uno::Reference< css::style::XStyle >& aXStyle,
+    const TextCharacterProperties& rTextStyleProperties,
+    const TextListStylePtr& pMasterTextListStylePtr) const
+{
+    assert(!isEmpty());
+
+    if (maParagraphs.empty())
+        return;
+
+    // Apply character properties
+    PropertySet aPropSet(aXStyle);
+    TextCharacterProperties 
aTextCharacterProps(maParagraphs[0]->getCharacterStyle(
+        rTextStyleProperties, *pMasterTextListStylePtr, maTextListStyle));
+    aTextCharacterProps.pushToPropSet(aPropSet, rFilterBase);
+
+    // Apply paragraph properties
+    TextListStyle aCombinedTextStyle;
+    aCombinedTextStyle.apply(*pMasterTextListStylePtr);
+    aCombinedTextStyle.apply(maTextListStyle);
+
+    TextParagraphProperties* pTextParagraphStyle = 
maParagraphs[0]->getParagraphStyle(aCombinedTextStyle);
+    if (pTextParagraphStyle)
+    {
+        Reference< XPropertySet > xProps(aXStyle, UNO_QUERY_THROW);
+        PropertyMap aioBulletList;
+        aioBulletList.setProperty< sal_Int32 >(PROP_LeftMargin, 0); // Init 
bullets left margin to 0 (no bullets).
+        float nCharHeight = 
xProps->getPropertyValue(u"CharHeight"_ustr).get<float>();
+        TextParagraphProperties aParaProp;
+        aParaProp.apply(*pTextParagraphStyle);
+        aParaProp.pushToPropSet(&rFilterBase, xProps, aioBulletList, 
&pTextParagraphStyle->getBulletList(),
+            true, nCharHeight, true);
+    }
+}
+
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 61adfbd87512..5b80d96e0add 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -26,6 +26,8 @@
 #include <editeng/flditem.hxx>
 
 #include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
 #include <com/sun/star/container/XNamed.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -157,6 +159,66 @@ bool PPTShape::IsPlaceHolderCandidate(const SlidePersist& 
rSlidePersist) const
     return ShapeHasNoVisualPropertiesOnImport(*this);
 }
 
+void PPTShape::setTextMasterStyles( const SlidePersist& rSlidePersist, const 
oox::core::XmlFilterBase& rFilterBase, const std::u16string_view& sType )
+{
+    if (!rSlidePersist.isMasterPage())
+        return;
+
+    try
+    {
+        Reference< style::XStyleFamiliesSupplier > 
aXStyleFamiliesSupplier(rFilterBase.getModel(), UNO_QUERY_THROW);
+        Reference< container::XNameAccess > 
aXNameAccess(aXStyleFamiliesSupplier->getStyleFamilies());
+        Reference< container::XNamed > aXNamed(rSlidePersist.getPage(), 
UNO_QUERY_THROW);
+
+        if (aXNameAccess.is())
+        {
+            OUString aStyle;
+            OUString aFamily;
+
+            if (sType == u"com.sun.star.presentation.TitleTextShape") // title 
style
+            {
+                aStyle = u"title"_ustr;
+                aFamily = aXNamed->getName();
+            }
+            else if (sType == u"com.sun.star.presentation.SubtitleShape") // 
subtitle
+            {
+                aStyle = u"subtitle"_ustr;
+                aFamily = aXNamed->getName();
+            }
+            else if (sType == u"com.sun.star.presentation.OutlinerShape") // 
body style
+            {
+                aStyle = u"outline1"_ustr;
+                aFamily = aXNamed->getName();
+            }
+            else if (sType == u"com.sun.star.presentation.NotesShape") // 
notes style
+            {
+                aStyle = u"title"_ustr;
+                aFamily = aXNamed->getName();
+            }
+
+            Reference< container::XNameAccess > xFamilies;
+            if (aXNameAccess->hasByName(aFamily))
+            {
+                if (aXNameAccess->getByName(aFamily) >>= xFamilies)
+                {
+                    if (xFamilies->hasByName(aStyle))
+                    {
+                        Reference< style::XStyle > aXStyle;
+                        if (xFamilies->getByName(aStyle) >>= aXStyle)
+                        {
+                            TextCharacterProperties aCharStyleProperties;
+                            getTextBody()->ApplyMasterTextStyle(rFilterBase, 
aXStyle, aCharStyleProperties, mpMasterTextListStyle);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    catch (const Exception&)
+    {
+    }
+}
+
 void PPTShape::addShape(
         oox::core::XmlFilterBase& rFilterBase,
         const SlidePersist& rSlidePersist,
@@ -462,6 +524,11 @@ void PPTShape::addShape(
                     getTextBody()->ApplyStyleEmpty(rFilterBase, xText, 
aCharStyleProperties, mpMasterTextListStyle);
                 }
             }
+            // Apply text properties on master placeholder styles
+            if (meShapeLocation == Layout && getTextBody() && 
!getTextBody()->isEmpty())
+            {
+                setTextMasterStyles(rSlidePersist, rFilterBase, sServiceName);
+            }
             if (pShapeMap)
             {
                 // bnc#705982 - if optional model id reference is
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 41beb185e0c6..4f71fcd9665e 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -2092,6 +2092,50 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf143603)
     CPPUNIT_ASSERT_EQUAL(size_t(0), 
pDoc->GetUndoManager()->GetUndoActionCount());
 }
 
+CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf111927)
+{
+    createSdImpressDoc("pptx/tdf163239.pptx");
+
+    uno::Reference<style::XStyleFamiliesSupplier> 
xStyleFamiliesSupplier(mxComponent,
+                                                                         
uno::UNO_QUERY);
+    uno::Reference<container::XNameAccess> xStyleFamilies
+        = xStyleFamiliesSupplier->getStyleFamilies();
+
+    // 1st slide
+    uno::Reference<container::XNameAccess> xStyleFamily(
+        xStyleFamilies->getByName(u"Title Slide"_ustr), uno::UNO_QUERY);
+    {
+        uno::Reference<style::XStyle> 
xStyle(xStyleFamily->getByName(u"title"_ustr),
+                                             uno::UNO_QUERY);
+        uno::Reference<beans::XPropertySet> xPropSet(xStyle, uno::UNO_QUERY);
+
+        CPPUNIT_ASSERT_EQUAL(44.0f, 
xPropSet->getPropertyValue(u"CharHeight"_ustr).get<float>());
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(style::ParagraphAdjust_CENTER),
+                             
xPropSet->getPropertyValue(u"ParaAdjust"_ustr).get<sal_Int16>());
+    }
+    {
+        uno::Reference<style::XStyle> 
xStyle(xStyleFamily->getByName(u"subtitle"_ustr),
+                                             uno::UNO_QUERY);
+        uno::Reference<beans::XPropertySet> xPropSet(xStyle, uno::UNO_QUERY);
+
+        CPPUNIT_ASSERT_EQUAL(32.0f, 
xPropSet->getPropertyValue(u"CharHeight"_ustr).get<float>());
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(style::ParagraphAdjust_CENTER),
+                             
xPropSet->getPropertyValue(u"ParaAdjust"_ustr).get<sal_Int16>());
+    }
+    // 2nd slide
+    xStyleFamily.set(xStyleFamilies->getByName(u"simple text 
placeholder"_ustr), uno::UNO_QUERY);
+    {
+        uno::Reference<style::XStyle> 
xStyle(xStyleFamily->getByName(u"outline1"_ustr),
+                                             uno::UNO_QUERY);
+        uno::Reference<beans::XPropertySet> xPropSet(xStyle, uno::UNO_QUERY);
+
+        float nCharHeight = 
xPropSet->getPropertyValue(u"CharHeight"_ustr).get<float>();
+        CPPUNIT_ASSERT_EQUAL(60.0f, nCharHeight);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(style::ParagraphAdjust_CENTER),
+                             
xPropSet->getPropertyValue(u"ParaAdjust"_ustr).get<sal_Int16>());
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/qa/unit/import-tests2.cxx b/sd/qa/unit/import-tests2.cxx
index c0b18df3855a..c9986b17b924 100644
--- a/sd/qa/unit/import-tests2.cxx
+++ b/sd/qa/unit/import-tests2.cxx
@@ -174,18 +174,18 @@ CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf157285)
     sal_Int32 nHeight1 = xShape1->getSize().Height;
 
     // Without the fix in place, this test would have failed with
-    // Expected: placeholder height: 2795
+    // Expected: placeholder height: 2565
     // Actual  : placeholder height: 3435
-    CPPUNIT_ASSERT_EQUAL(sal_Int32(2795), nHeight1);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2565), nHeight1);
 
     uno::Reference<drawing::XShape> xShape2(getShapeFromPage(1, 0), 
uno::UNO_QUERY);
     CPPUNIT_ASSERT(xShape2.is());
     sal_Int32 nHeight2 = xShape2->getSize().Height;
 
     // Without the fix in place, this test would have failed with
-    // Expected: placeholder height: 1271
+    // Expected: placeholder height: 1180
     // Actual  : placeholder height: 11303
-    CPPUNIT_ASSERT_EQUAL(sal_Int32(1271), nHeight2);
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1180), nHeight2);
 }
 
 CPPUNIT_TEST_FIXTURE(SdImportTest2, testTdf152186)
commit 66ea35681a263b48a0e290aae0606db76171abf3
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Fri Aug 8 13:06:38 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:10 2025 +0200

    tdf#163239 - OOXML sd: fix customized placeholder text in master slide to be
    
    shown as the "prompt" text in the final slides
    
    What should works
     - New sd specific uno api shape property: CustomPromptText
     - With this property, the corresponding master slide SdrObj's
       and their final slide SdrObj's placeholder text can be set.
     - If we have CustomPromptText value it will be used for the
       PresetObj and will be created (CreatePresObj) with those texts
       as a default prompt text. If we do not have the usual default
       ones will be used.
     - OOXML import and export (partly since we have many other problems
       around export) are works
     - Enable to OOXML import of com.sun.star.presentation.SubtitleShape
       (partly, since in the core we handle them as Text objects) to handle them
       a bit better. OOXML export is still not good for different reasons:
       see tdf#112557
     - Unit tests for custom "prompt" text
    
    TODO
     - odf import/export
     - we cannot set in runtime new custom placeholder texts, so the new
       placeholders/presobj will be created with the usual default texts.
    
    Change-Id: Ic2b06a10f7a19f0cfdb2b705645b08a24b3e433b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189185
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    (cherry picked from commit 41c59a730ffce72202083b8ce3438c10ba18f1d1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189517
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Justin Luth <jl...@mail.com>

diff --git a/include/oox/drawingml/shape.hxx b/include/oox/drawingml/shape.hxx
index 81797757faaf..40c207be2edd 100644
--- a/include/oox/drawingml/shape.hxx
+++ b/include/oox/drawingml/shape.hxx
@@ -244,6 +244,8 @@ public:
     void                setTxbxHasLinkedTxtBox( const bool rhs){ 
mbHasLinkedTxbx = rhs; };
     const LinkedTxbxAttr&     getLinkedTxbxAttributes() const { return 
maLinkedTxbxAttr; };
     bool                isLinkedTxbx() const { return mbHasLinkedTxbx; };
+    void                setCustomPrompt( bool bValue ) { mbHasCustomPrompt = 
bValue; }
+    bool                getCustomPrompt() const { return mbHasCustomPrompt; }
 
     void setZOrder(sal_Int32 nZOrder) { mnZOrder = nZOrder; }
 
@@ -298,7 +300,7 @@ protected:
                             const Theme* pTheme,
                             const css::uno::Reference< css::drawing::XShapes 
>& rxShapes,
                             bool bClearText,
-                            bool bDoNotInsertEmptyTextBody,
+                            const oox::drawingml::ShapePtr& pPlaceholder,
                             basegfx::B2DHomMatrix& aTransformation,
                             const FillProperties& rShapeOrParentShapeFillProps,
                             const oox::drawingml::ShapePtr& pParentGroupShape 
= nullptr
@@ -430,6 +432,7 @@ private:
     bool mbTextBox; ///< This shape has a textbox.
     LinkedTxbxAttr                  maLinkedTxbxAttr;
     bool                            mbHasLinkedTxbx; // this text box has 
linked text box ?
+    bool                            mbHasCustomPrompt; // indicates that it's 
not a generic placeholder
 
     css::uno::Sequence<css::beans::PropertyValue> maDiagramDoms;
 
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 621c44e78c4a..524e57e59f44 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -826,6 +826,8 @@ public:
 
     void SetEmptyPresObj(bool bEpt);
     bool IsEmptyPresObj() const { return m_bEmptyPresObj;}
+    void SetCustomPromptText(const OUString& aVal);
+    OUString GetCustomPromptText() const { return m_aCustomPromptText; }
     void SetNotVisibleAsMaster(bool bFlg);
     bool IsNotVisibleAsMaster() const { return m_bNotVisibleAsMaster;}
     void SetUserCall(SdrObjUserCall* pUser);
@@ -915,6 +917,8 @@ protected:
     bool                        mbLineIsOutsideGeometry : 1;
     // #i25616#
     bool                        mbSupportTextIndentingOnLineWidthChange : 1;
+    // custom prompt text for empty presentation object
+    OUString                    m_aCustomPromptText;
 
     std::unique_ptr<sdr::annotation::ObjectAnnotationData> mpAnnotationData;
 
diff --git a/include/svx/svdpage.hxx b/include/svx/svdpage.hxx
index f64af22e1353..4b0a4eb84b51 100644
--- a/include/svx/svdpage.hxx
+++ b/include/svx/svdpage.hxx
@@ -520,6 +520,8 @@ public:
 
     void MakePageObjectsNamesUnique();
 
+    virtual bool RestoreDefaultText(SdrObject* pObj, const OUString& rStr);
+
 protected:
     void TRG_ImpMasterPageRemoved(const SdrPage& rRemovedPage);
 
diff --git a/offapi/com/sun/star/presentation/Shape.idl 
b/offapi/com/sun/star/presentation/Shape.idl
index 0539228e090d..07abc55e8a81 100644
--- a/offapi/com/sun/star/presentation/Shape.idl
+++ b/offapi/com/sun/star/presentation/Shape.idl
@@ -128,6 +128,14 @@ published service Shape
      */
     [property] long Verb;
 
+    /** Determines if the shape has custom placeholder text.
+
+        This is the custom placeholder text for Presentation objects.
+
+        @since LibreOffice 26.2
+    */
+    [optional, property] string CustomPromptText;
+
 };
 
 
diff --git a/oox/inc/drawingml/textbody.hxx b/oox/inc/drawingml/textbody.hxx
index 245589e86ac3..d059ed501306 100644
--- a/oox/inc/drawingml/textbody.hxx
+++ b/oox/inc/drawingml/textbody.hxx
@@ -64,7 +64,10 @@ public:
                             const TextCharacterProperties& 
rTextStyleProperties,
                             const TextListStylePtr& pMasterTextListStyle ) 
const;
     bool isEmpty() const;
+    /// Returns first run of text
     OUString toString() const;
+    /// Returns first paragraph of text
+    OUString firstParatoString() const;
 
     /** Returns whether the textbody had a rPr tag in it that alters it 
visually
      *
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 4cb0160facee..54b8d91ba663 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -153,6 +153,7 @@ Shape::Shape()
 , mbWps( false )
 , mbTextBox( false )
 , mbHasLinkedTxbx( false )
+, mbHasCustomPrompt( false )
 , maDiagramDoms( 0 )
 , mpDiagramHelper( nullptr )
 {
@@ -186,6 +187,7 @@ Shape::Shape( const OUString& rServiceName, bool 
bDefaultHeight )
 , mbWps( false )
 , mbTextBox( false )
 , mbHasLinkedTxbx( false )
+, mbHasCustomPrompt( false )
 , maDiagramDoms( 0 )
 , mpDiagramHelper( nullptr )
 {
@@ -230,6 +232,7 @@ Shape::Shape( const ShapePtr& pSourceShape )
 , mbWps( pSourceShape->mbWps )
 , mbTextBox( pSourceShape->mbTextBox )
 , mbHasLinkedTxbx(false)
+, mbHasCustomPrompt( pSourceShape->mbHasCustomPrompt )
 , maDiagramDoms( pSourceShape->maDiagramDoms )
 , mnZOrder(pSourceShape->mnZOrder)
 , mnZOrderOff(pSourceShape->mnZOrderOff)
@@ -394,7 +397,7 @@ void Shape::addShape(
         if( !sServiceName.isEmpty() )
         {
             basegfx::B2DHomMatrix aMatrix( aTransformation );
-            Reference< XShape > xShape( createAndInsert( rFilterBase, 
sServiceName, pTheme, rxShapes, false, false, aMatrix, 
rShapeOrParentShapeFillProps, pParentGroupShape) );
+            Reference< XShape > xShape( createAndInsert( rFilterBase, 
sServiceName, pTheme, rxShapes, false, nullptr, aMatrix, 
rShapeOrParentShapeFillProps, pParentGroupShape) );
 
             if( pShapeMap && !msId.isEmpty() )
             {
@@ -916,7 +919,7 @@ Reference< XShape > const & Shape::createAndInsert(
         const Theme* pTheme,
         const css::uno::Reference< css::drawing::XShapes >& rxShapes,
         bool bClearText,
-        bool bDoNotInsertEmptyTextBody,
+        const oox::drawingml::ShapePtr& pPlaceholder,
         basegfx::B2DHomMatrix& aParentTransformation,
         const FillProperties& rShapeOrParentShapeFillProps,
         const oox::drawingml::ShapePtr& pParentGroupShape)
@@ -1816,6 +1819,16 @@ Reference< XShape > const & Shape::createAndInsert(
                 
propertySet->setPropertyValue(u"InteropGrabBag"_ustr,uno::Any(aGrabBag));
             }
 
+            // set custom prompt text if available
+            if (getCustomPrompt() && getTextBody() && 
!getTextBody()->isEmpty())
+            {
+                aShapeProps.setProperty(PROP_CustomPromptText, 
getTextBody()->firstParatoString());
+            }
+            else if (pPlaceholder && pPlaceholder->getCustomPrompt() && 
pPlaceholder->getTextBody() && !pPlaceholder->getTextBody()->isEmpty())
+            {
+                aShapeProps.setProperty(PROP_CustomPromptText, 
pPlaceholder->getTextBody()->firstParatoString());
+            }
+
             PropertySet( xSet ).setProperties( aShapeProps );
 
             if (mpTablePropertiesPtr && aServiceName == 
"com.sun.star.drawing.TableShape")
@@ -2132,7 +2145,7 @@ Reference< XShape > const & Shape::createAndInsert(
             mpTextBody.reset();
 
         // in some cases, we don't have any text body.
-        if( mpTextBody && ( !bDoNotInsertEmptyTextBody || 
!mpTextBody->isEmpty() ) )
+        if( mpTextBody && ( !pPlaceholder || !mpTextBody->isEmpty() ) )
         {
             Reference < XText > xText( mxShape, UNO_QUERY );
             if ( xText.is() )   // not every shape is supporting an XText 
interface (e.g. GroupShape)
@@ -2223,7 +2236,7 @@ Reference< XShape > const & Shape::createAndInsert(
         }
 
         // Set text glow effect for shapes
-        if (mpTextBody && (!bDoNotInsertEmptyTextBody || 
!mpTextBody->isEmpty()))
+        if (mpTextBody && (!pPlaceholder || !mpTextBody->isEmpty()))
         {
             const TextParagraphVector& rParagraphs = 
mpTextBody->getParagraphs();
             if (!rParagraphs.empty())
diff --git a/oox/source/drawingml/shapecontext.cxx 
b/oox/source/drawingml/shapecontext.cxx
index 1cd22c7cd422..2dc77a0e676f 100644
--- a/oox/source/drawingml/shapecontext.cxx
+++ b/oox/source/drawingml/shapecontext.cxx
@@ -86,6 +86,8 @@ ContextHandlerRef ShapeContext::onCreateContext( sal_Int32 
aElementToken, const
         mpShapePtr->setSubType( rAttribs.getToken( XML_type, XML_obj ) );
         if( rAttribs.hasAttribute( XML_idx ) )
             mpShapePtr->setSubTypeIndex( rAttribs.getInteger( XML_idx, 0 ) );
+        if( rAttribs.hasAttribute( XML_hasCustomPrompt ) )
+            mpShapePtr->setCustomPrompt( rAttribs.getBool( 
XML_hasCustomPrompt, false ) );
         break;
     // nvSpPr CT_ShapeNonVisual end
 
diff --git a/oox/source/drawingml/textbody.cxx 
b/oox/source/drawingml/textbody.cxx
index 1d9e45f505f5..9e1c68b5206f 100644
--- a/oox/source/drawingml/textbody.cxx
+++ b/oox/source/drawingml/textbody.cxx
@@ -95,6 +95,21 @@ OUString TextBody::toString() const
     return OUString();
 }
 
+OUString TextBody::firstParatoString() const
+{
+    OUStringBuffer aRet;
+    if (!isEmpty())
+    {
+        const TextRunVector& rRuns = maParagraphs.front()->getRuns();
+        for (TextRunVector::const_iterator aRIt = rRuns.begin(), aREnd = 
rRuns.end(); aRIt != aREnd; ++aRIt)
+        {
+            const TextRun& rTextRun = **aRIt;
+            aRet.append(rTextRun.getText());
+        }
+    }
+    return aRet.makeStringAndClear();
+}
+
 bool TextBody::hasVisualRunProperties() const
 {
     for ( auto& pTextParagraph : getParagraphs() )
diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index d8c396382217..b4062cda91f5 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -2185,6 +2185,7 @@ constexpr auto constMap = 
frozen::make_unordered_map<std::u16string_view, ShapeC
     { u"com.sun.star.presentation.OutlinerShape", &ShapeExport::WriteTextShape 
},
     { u"com.sun.star.presentation.SlideNumberShape", 
&ShapeExport::WriteTextShape },
     { u"com.sun.star.presentation.TitleTextShape", 
&ShapeExport::WriteTextShape },
+    //{ u"com.sun.star.presentation.SubtitleShape", 
&ShapeExport::WriteTextShape }, TODO: handle subtitle shape: see tdf#112557 
workaround
 });
 
 } // end anonymous namespace
diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx
index 634c46dc5255..61adfbd87512 100644
--- a/oox/source/ppt/pptshape.cxx
+++ b/oox/source/ppt/pptshape.cxx
@@ -195,12 +195,8 @@ void PPTShape::addShape(
                 break;
                 case XML_subTitle :
                 {
-                    if ((meShapeLocation == Master) || (meShapeLocation == 
Layout))
-                        sServiceName = OUString();
-                    else {
-                        sServiceName = 
"com.sun.star.presentation.SubtitleShape";
-                        aMasterTextListStyle = 
rSlidePersist.getMasterPersist() ? 
rSlidePersist.getMasterPersist()->getBodyTextStyle() : 
rSlidePersist.getBodyTextStyle();
-                    }
+                    sServiceName = "com.sun.star.presentation.SubtitleShape";
+                    aMasterTextListStyle = rSlidePersist.getMasterPersist() ? 
rSlidePersist.getMasterPersist()->getBodyTextStyle() : 
rSlidePersist.getBodyTextStyle();
                 }
                 break;
                    case XML_obj :
@@ -454,7 +450,7 @@ void PPTShape::addShape(
             } else
                 setMasterTextListStyle( aMasterTextListStyle );
 
-            Reference< XShape > xShape( createAndInsert( rFilterBase, 
sServiceName, pTheme, rxShapes, bClearText, bool(mpPlaceholder), 
aTransformation, getFillProperties() ) );
+            Reference< XShape > xShape( createAndInsert( rFilterBase, 
sServiceName, pTheme, rxShapes, bClearText, mpPlaceholder, aTransformation, 
getFillProperties() ) );
 
             // Apply text properties on placeholder text inside this 
placeholder shape
             if (meShapeLocation == Slide && mpPlaceholder && getTextBody() && 
getTextBody()->isEmpty())
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index d73008a80539..36e9a16991ef 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -125,6 +125,7 @@ CurveName
 CurveStyle
 CustomLabelPosition
 CustomLabelSize
+CustomPromptText
 CustomShapeGeometry
 D3DSceneAmbientColor
 D3DSceneLightColor2
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index 71b47e4b7cc9..1b2cafc550c9 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -167,7 +167,7 @@ public:
     sd::ShapeList&  GetPresentationShapeList() { return 
maPresentationShapeList; }
 
     void EnsureMasterPageDefaultBackground();
-    SD_DLLPUBLIC SdrObject* CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::tools::Rectangle& rRect);
+    SD_DLLPUBLIC SdrObject* CreatePresObj(PresObjKind eObjKind, bool 
bVertical, const ::tools::Rectangle& rRect, const OUString& rCustomPrompt = 
OUString());
     SD_DLLPUBLIC rtl::Reference<SdrObject> CreateDefaultPresObj(PresObjKind 
eObjKind);
     SD_DLLPUBLIC void DestroyDefaultPresObj(PresObjKind eObjKind);
     SD_DLLPUBLIC SdrObject* GetPresObj(PresObjKind eObjKind, int nIndex = 1, 
bool bFuzzySearch = false );
@@ -177,7 +177,7 @@ public:
     SfxStyleSheet*  GetStyleSheetForPresObj(PresObjKind eObjKind) const;
     void            GetPageInfo(::tools::JsonWriter& jsonWriter);
     void            NotifyPagePropertyChanges();
-    bool            RestoreDefaultText( SdrObject* pObj );
+    bool            RestoreDefaultText( SdrObject* pObj, const OUString& rStr 
) override;
 
     /** @return true if the given SdrObject is inside the presentation object 
list */
     bool            IsPresObj(const SdrObject* pObj);
@@ -191,7 +191,7 @@ public:
     SD_DLLPUBLIC void SetAutoLayout(AutoLayout eLayout, bool bInit=false, bool 
bCreate=false);
     AutoLayout      GetAutoLayout() const { return meAutoLayout; }
     void            CreateTitleAndLayout(bool bInit=false, bool bCreate=false);
-    SdrObject*      InsertAutoLayoutShape(SdrObject* pObj, PresObjKind 
eObjKind, bool bVertical, const ::tools::Rectangle& rRect, bool bInit);
+    SdrObject*      InsertAutoLayoutShape(SdrObject* pObj, PresObjKind 
eObjKind, bool bVertical, const ::tools::Rectangle& rRect, const OUString& 
rCustomPrompt, bool bInit);
 
     virtual void       NbcInsertObject(SdrObject* pObj, size_t 
nPos=SAL_MAX_SIZE) override;
     virtual rtl::Reference<SdrObject> NbcRemoveObject(size_t nObjNum) override;
diff --git a/sd/qa/unit/data/pptx/tdf163239.pptx 
b/sd/qa/unit/data/pptx/tdf163239.pptx
new file mode 100644
index 000000000000..7dbc2e2a9862
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf163239.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml4.cxx 
b/sd/qa/unit/export-tests-ooxml4.cxx
index d9bea30c1334..c88f71db7db4 100644
--- a/sd/qa/unit/export-tests-ooxml4.cxx
+++ b/sd/qa/unit/export-tests-ooxml4.cxx
@@ -797,7 +797,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, 
testTdf140912_PicturePlaceholder)
     CPPUNIT_ASSERT(isEmptyPresentationObject);
 
     // If we supported custom prompt text, here we would also test "String" 
property,
-    // which would be equal to "Insert Image".
+    // which would be equal to "Insert Image". See first tests: 
testCustomPromptTexts
 }
 
 CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, testEnhancedPathViewBox)
@@ -1374,6 +1374,70 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, 
testTdf165261HorzAnchor)
     
CPPUNIT_ASSERT_EQUAL(drawing::TextHorizontalAdjust::TextHorizontalAdjust_CENTER,
 eHori);
 }
 
+CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest4, testCustomPromptTexts)
+{
+    createSdImpressDoc("pptx/tdf163239.pptx");
+    saveAndReload(u"Impress Office Open XML"_ustr);
+
+    const SdrPage* pPage1 = GetPage(1);
+    {
+        // subtitle placeholder text
+        SdrTextObj* pTxtObj = DynCastSdrTextObj(pPage1->GetObj(0));
+        CPPUNIT_ASSERT_MESSAGE("no text object", pTxtObj != nullptr);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong object type!", SdrObjKind::Text,
+                                     pTxtObj->GetObjIdentifier());
+        const EditTextObject& aEdit = 
pTxtObj->GetOutlinerParaObject()->GetTextObject();
+        OUString aText = aEdit.GetText(0);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text!", aText, u"Click 
to add Text"_ustr);
+        /* TODO: handle subtitle shape: see tdf#112557 workaround
+            - Expected: Click to edit customized Master Subtitle style
+            - Actual : Click to add Text
+            - Wrong placeholder text!
+        */
+
+        auto xShapeProps(getShapeFromPage(0, 0));
+        CPPUNIT_ASSERT(xShapeProps->getPropertyValue(u"CustomPromptText"_ustr) 
>>= aText);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text was set!", aText, 
u""_ustr);
+        /* TODO: handle subtitle shape: see tdf#112557 workaround
+            - Expected: Click to edit customized Master Subtitle style
+            - Actual :
+            - Wrong placeholder text was set!
+        */
+    }
+
+    {
+        SdrTextObj* pTxtObj = DynCastSdrTextObj(pPage1->GetObj(1));
+        CPPUNIT_ASSERT_MESSAGE("no text object", pTxtObj != nullptr);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong object type!", 
SdrObjKind::TitleText,
+                                     pTxtObj->GetObjIdentifier());
+        const EditTextObject& aEdit = 
pTxtObj->GetOutlinerParaObject()->GetTextObject();
+        OUString aText = aEdit.GetText(0);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text!", aText, 
u"Custom Title 1"_ustr);
+
+        auto xShapeProps(getShapeFromPage(1, 0));
+        CPPUNIT_ASSERT(xShapeProps->getPropertyValue(u"CustomPromptText"_ustr) 
>>= aText);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text was set!", aText,
+                                     u"Custom Title 1"_ustr);
+    }
+
+    const SdrPage* pPage2 = GetPage(3);
+    {
+        // body placeholder text
+        SdrTextObj* pTxtObj = DynCastSdrTextObj(pPage2->GetObj(0));
+        CPPUNIT_ASSERT_MESSAGE("no text object", pTxtObj != nullptr);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong object type!", 
SdrObjKind::OutlineText,
+                                     pTxtObj->GetObjIdentifier());
+        const EditTextObject& aEdit = 
pTxtObj->GetOutlinerParaObject()->GetTextObject();
+        OUString aText = aEdit.GetText(0);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text!", aText, u"Text 
placeholder"_ustr);
+
+        auto xShapeProps(getShapeFromPage(0, 1));
+        CPPUNIT_ASSERT(xShapeProps->getPropertyValue(u"CustomPromptText"_ustr) 
>>= aText);
+        CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong placeholder text was set!", aText,
+                                     u"Text placeholder"_ustr);
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 76ab8e4b42cd..0d8d5aeebd6c 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -284,7 +284,7 @@ void SdPage::EnsureMasterPageDefaultBackground()
 
 /** creates a presentation object with the given PresObjKind on this page. A 
user call will be set
 */
-SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const 
::tools::Rectangle& rRect )
+SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const 
::tools::Rectangle& rRect, const OUString& rCustomPrompt)
 {
     SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& 
>(getSdrModelFromSdrPage()).GetUndoManager());
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && 
IsInserted();
@@ -498,7 +498,15 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, 
bool bVertical, const ::t
             pSdrObj->SetLogicRect(rRect);
         }
 
-        OUString aString = GetPresObjText(eObjKind);
+        OUString aString;
+        if (!rCustomPrompt.isEmpty())
+        {
+            pSdrObj->SetCustomPromptText(rCustomPrompt);
+            aString = rCustomPrompt;
+        }
+        else
+            aString = GetPresObjText(eObjKind);
+
         if(!aString.isEmpty() || bForceText)
             if (auto pTextObj = DynCastSdrTextObj( pSdrObj.get() ) )
             {
@@ -1479,6 +1487,32 @@ static void CalcAutoLayoutRectangles( SdPage const & 
rPage,::tools::Rectangle* r
     }
 }
 
+static void GetAutoLayoutCustomPromptTexts( SdPage& rPage, const 
LayoutDescriptor& rDescriptor, std::array<OUString, MAX_PRESOBJS>& 
rCustomPrompts )
+{
+    // init layout shapes with their corresponding prompt text (if they have)
+    // for each presentation shape kind
+    if (rPage.GetPageKind() == PageKind::Handout || !rPage.TRG_HasMasterPage())
+        return;
+
+    SdPage& rMasterPage = static_cast<SdPage&>(rPage.TRG_GetMasterPage());
+
+    o3tl::enumarray<PresObjKind,int> PresObjIndex;
+    PresObjIndex.fill(1);
+
+    // for each entry in the layoutdescriptor, arrange a presentation shape
+    for (int i = 0; (i < MAX_PRESOBJS) && (rDescriptor.meKind[i] != 
PresObjKind::NONE); i++)
+    {
+        PresObjKind eKind = rDescriptor.meKind[i];
+        SdrObject* pObj = nullptr;
+        while( (pObj = rMasterPage.GetPresObj( eKind, PresObjIndex[eKind], 
true )) != nullptr )
+        {
+            PresObjIndex[eKind]++; // on next search for eKind, find next 
shape with same eKind
+            rCustomPrompts[i] = pObj->GetCustomPromptText();
+            break;
+        }
+    }
+}
+
 static void findAutoLayoutShapesImpl( SdPage& rPage, const LayoutDescriptor& 
rDescriptor, std::array<SdrObject*, MAX_PRESOBJS>& rShapes, bool bInit, bool 
bSwitchLayout )
 {
     // init list of indexes for each presentation shape kind
@@ -1662,6 +1696,9 @@ void SdPage::SetAutoLayout(AutoLayout eLayout, bool 
bInit, bool bCreate )
     OUString sLayoutName( enumtoString(meAutoLayout) );
     CalcAutoLayoutRectangles( *this, aRectangle, sLayoutName);
 
+    std::array<OUString, MAX_PRESOBJS > aCustomPromptTexts;
+    GetAutoLayoutCustomPromptTexts( *this, aDescriptor, aCustomPromptTexts );
+
     o3tl::sorted_vector< SdrObject* > aUsedPresentationObjects;
 
     std::array<SdrObject*, MAX_PRESOBJS > aLayoutShapes;
@@ -1672,7 +1709,7 @@ void SdPage::SetAutoLayout(AutoLayout eLayout, bool 
bInit, bool bCreate )
     for (int i = 0; (i < MAX_PRESOBJS) && (aDescriptor.meKind[i] != 
PresObjKind::NONE); i++)
     {
         PresObjKind eKind = aDescriptor.meKind[i];
-        SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, 
aDescriptor.mbVertical[i], aRectangle[i], bInit );
+        SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, 
aDescriptor.mbVertical[i], aRectangle[i], aCustomPromptTexts[i], bInit );
         if( pObj )
             aUsedPresentationObjects.insert(pObj); // remember that we used 
this empty shape
     }
@@ -2247,12 +2284,14 @@ static rtl::Reference<SdrObject> 
convertPresentationObjectImpl(SdPage& rPage, Sd
         If true, the shape is created vertical if bInit is true
     @param  rRect
         The rectangle that should be used to transform the shape
+    @param  rCustomPrompt
+        The custom prompt text for placeholder text in presObj's, if its empty 
the default is used
     @param  bInit
         If true the shape is created if not found
     @returns
         A presentation shape that was either found or created with the given 
parameters
 */
-SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj1, PresObjKind 
eObjKind, bool bVertical, const ::tools::Rectangle& rRect, bool bInit)
+SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj1, PresObjKind 
eObjKind, bool bVertical, const ::tools::Rectangle& rRect, const OUString& 
rCustomPrompt, bool bInit)
 {
     rtl::Reference<SdrObject> pObj = pObj1;
     SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& 
>(getSdrModelFromSdrPage()).GetUndoManager());
@@ -2260,7 +2299,7 @@ SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* 
pObj1, PresObjKind eObjKind,
 
     if (!pObj && bInit)
     {
-        pObj = CreatePresObj(eObjKind, bVertical, rRect);
+        pObj = CreatePresObj(eObjKind, bVertical, rRect, rCustomPrompt);
     }
     else if ( pObj && (pObj->GetUserCall() || bInit) )
     {
@@ -2922,7 +2961,7 @@ bool SdPage::checkVisibility(
     return true;
 }
 
-bool SdPage::RestoreDefaultText( SdrObject* pObj )
+bool SdPage::RestoreDefaultText( SdrObject* pObj, const OUString& rStr )
 {
     bool bRet = false;
 
@@ -2939,7 +2978,7 @@ bool SdPage::RestoreDefaultText( SdrObject* pObj )
         {
             sd::ModifyGuard 
aGuard(static_cast<SdDrawDocument*>(&getSdrModelFromSdrPage()));
 
-            OUString aString( GetPresObjText(ePresObjKind) );
+            OUString aString = rStr.isEmpty() ? GetPresObjText(ePresObjKind) : 
rStr;
 
             if (!aString.isEmpty())
             {
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 80c41260545b..30977208cf16 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -345,6 +345,12 @@ ShapeExport& PowerPointShapeExport::WriteTextShape(const 
Reference< XShape >& xS
         if (!WritePlaceholder(xShape, Title, mbMaster))
             ShapeExport::WriteTextShape(xShape);
     }
+    /*else if (sShapeType == "com.sun.star.presentation.SubtitleShape")
+    {
+        TODO: handle subtitle shape: see tdf#112557 workaround
+        if (!WritePlaceholder(xShape, Subtitle, mbMaster))
+            ShapeExport::WriteTextShape(xShape);
+    }*/
     else
         SAL_WARN("sd.eppt", "PowerPointShapeExport::WriteTextShape: shape of 
type '" << sShapeType << "' is ignored");
 
@@ -2420,20 +2426,32 @@ ShapeExport& 
PowerPointShapeExport::WritePlaceholderShape(const Reference< XShap
     const char* pType = getPlaceholderTypeName(ePlaceholder);
 
     SAL_INFO("sd.eppt", "write placeholder " << pType);
+
+    // export Custom Prompt
+    bool bUseCustomPrompt(false);
+    if (xProps.is() && 
xProps->getPropertySetInfo()->hasPropertyByName(u"CustomPromptText"_ustr))
+    {
+        OUString aCustomPromptText;
+        xProps->getPropertyValue(u"CustomPromptText"_ustr) >>= 
aCustomPromptText;
+        if (!aCustomPromptText.isEmpty())
+            bUseCustomPrompt = true;
+    }
+
     if (bUsePlaceholderIndex)
     {
         mpFS->singleElementNS(
             XML_p, XML_ph, XML_type, pType, XML_idx,
             OString::number(
-                
static_cast<PowerPointExport*>(GetFB())->CreateNewPlaceholderIndex(xShape)));
+                
static_cast<PowerPointExport*>(GetFB())->CreateNewPlaceholderIndex(xShape)),
+                    XML_hasCustomPrompt, sax_fastparser::UseIf("1", 
bUseCustomPrompt));
     }
     else
     {
         if ((mePageType == PageType::LAYOUT || mePageType == PageType::NORMAL)
             && ePlaceholder == Outliner)
-            mpFS->singleElementNS(XML_p, XML_ph);
+            mpFS->singleElementNS(XML_p, XML_ph, XML_hasCustomPrompt, 
sax_fastparser::UseIf("1", bUseCustomPrompt));
         else
-            mpFS->singleElementNS(XML_p, XML_ph, XML_type, pType);
+            mpFS->singleElementNS(XML_p, XML_ph, XML_type, pType, 
XML_hasCustomPrompt, sax_fastparser::UseIf("1", bUseCustomPrompt));
     }
     mpFS->endElementNS(XML_p, XML_nvPr);
     mpFS->endElementNS(XML_p, XML_nvSpPr);
diff --git a/sd/source/ui/inc/unoprnms.hxx b/sd/source/ui/inc/unoprnms.hxx
index 9753c1a2871a..062d898f4992 100644
--- a/sd/source/ui/inc/unoprnms.hxx
+++ b/sd/source/ui/inc/unoprnms.hxx
@@ -59,6 +59,7 @@
 #define UNO_NAME_OBJ_MASTERDEPENDENT    "IsPlaceholderDependent"
 #define UNO_NAME_OBJ_ANIMATIONPATH      "AnimationPath"
 #define UNO_NAME_OBJ_LEGACYFRAGMENT     "LegacyFragment"
+#define UNO_NAME_OBJ_CUSTOMPROMPT       "CustomPromptText"
 
 #define UNO_NAME_LAYER_LOCKED           "IsLocked"
 #define UNO_NAME_LAYER_PRINTABLE        "IsPrintable"
diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx
index 49633f61bc30..2dd93e58097d 100644
--- a/sd/source/ui/unoidl/unoobj.cxx
+++ b/sd/source/ui/unoidl/unoobj.cxx
@@ -104,6 +104,8 @@ using ::com::sun::star::drawing::XShape;
 #define WID_PLACEHOLDERTEXT 24
 #define WID_LEGACYFRAGMENT  25
 
+#define WID_CUSTOMPROMPT    26
+
 #define IMPRESS_MAP_ENTRIES \
         { u"" UNO_NAME_OBJ_LEGACYFRAGMENT ""_ustr,WID_LEGACYFRAGMENT, 
cppu::UnoType<drawing::XShape>::get(),                 0, 0},\
         { u"" UNO_NAME_OBJ_ANIMATIONPATH ""_ustr, WID_ANIMPATH, 
cppu::UnoType<drawing::XShape>::get(),                 0, 0},\
@@ -128,6 +130,7 @@ using ::com::sun::star::drawing::XShape;
         { u"IsAnimation"_ustr,         WID_ISANIMATION,     
cppu::UnoType<bool>::get(),                            0, 0},\
         { u"NavigationOrder"_ustr,     WID_NAVORDER,        
cppu::UnoType<sal_Int32>::get(),                       0, 0},\
         { u"PlaceholderText"_ustr,     WID_PLACEHOLDERTEXT, 
cppu::UnoType<OUString>::get(),                        0, 0},\
+        { u"" UNO_NAME_OBJ_CUSTOMPROMPT ""_ustr, WID_CUSTOMPROMPT, 
cppu::UnoType<OUString>::get(),                        0, 0},\
 
     static std::span<const SfxItemPropertyMapEntry> 
lcl_GetImpress_SdXShapePropertyGraphicMap_Impl()
     {
@@ -574,6 +577,14 @@ void SAL_CALL SdXShape::setPropertyValue( const OUString& 
aPropertyName, const c
                 case WID_ISEMPTYPRESOBJ:
                     SetEmptyPresObj( ::cppu::any2bool(aValue) );
                     break;
+                case WID_CUSTOMPROMPT:
+                {
+                    OUString aString;
+                    if (!(aValue >>= aString))
+                        throw lang::IllegalArgumentException();
+                    SetCustomPromptText(aString);
+                    break;
+                }
                 case WID_MASTERDEPEND:
                     SetMasterDepend( ::cppu::any2bool(aValue) );
                     break;
@@ -672,6 +683,9 @@ css::uno::Any SAL_CALL SdXShape::getPropertyValue( const 
OUString& PropertyName
         case WID_ISEMPTYPRESOBJ:
             aRet <<= IsEmptyPresObj();
             break;
+        case WID_CUSTOMPROMPT:
+            aRet <<= GetCustomPromptText();
+            break;
         case WID_MASTERDEPEND:
             aRet <<= IsMasterDepend();
             break;
@@ -948,6 +962,38 @@ void SdXShape::SetEmptyPresObj(bool bEmpty)
     pObj->SetEmptyPresObj(bEmpty);
 }
 
+OUString SdXShape::GetCustomPromptText() const
+{
+    if (!IsPresObj())
+        return OUString();
+
+    SdrObject* pObj = mpShape->GetSdrObject();
+    if (pObj == nullptr)
+        return OUString();
+
+    return pObj->GetCustomPromptText();
+}
+
+void SdXShape::SetCustomPromptText(const OUString& aVal)
+{
+    if (!IsPresObj() || aVal.isEmpty())
+        return;
+
+    SdrObject* pObj = mpShape->GetSdrObject();
+    if (pObj == nullptr)
+        return;
+
+    if (!pObj->getSdrPageFromSdrObject()->IsMasterPage())
+    {
+        if (pObj->getSdrPageFromSdrObject()->RestoreDefaultText(pObj, aVal))
+            pObj->SetCustomPromptText(aVal);
+    }
+    else
+    {
+        pObj->SetCustomPromptText(aVal);
+    }
+}
+
 bool SdXShape::IsMasterDepend() const noexcept
 {
     SdrObject* pObj = mpShape->GetSdrObject();
diff --git a/sd/source/ui/unoidl/unoobj.hxx b/sd/source/ui/unoidl/unoobj.hxx
index 7c78bc520dcd..52206ea21a4a 100644
--- a/sd/source/ui/unoidl/unoobj.hxx
+++ b/sd/source/ui/unoidl/unoobj.hxx
@@ -57,6 +57,9 @@ private:
     bool IsEmptyPresObj() const;
     void SetEmptyPresObj(bool bEmpty);
 
+    OUString GetCustomPromptText() const;
+    void SetCustomPromptText(const OUString& aVal);
+
     bool IsMasterDepend() const noexcept;
     void SetMasterDepend( bool bDepend ) noexcept;
 
diff --git a/sd/source/ui/view/NotesPanelView.cxx 
b/sd/source/ui/view/NotesPanelView.cxx
index 42562275b70f..3ed6d4690f6b 100644
--- a/sd/source/ui/view/NotesPanelView.cxx
+++ b/sd/source/ui/view/NotesPanelView.cxx
@@ -219,7 +219,7 @@ void NotesPanelView::onLoseFocus()
             // if the notes are empty restore the placeholder text and state.
             SdPage* pPage = 
dynamic_cast<SdPage*>(pNotesTextObj->getSdrPageFromSdrObject());
             if (pPage)
-                pPage->RestoreDefaultText(pNotesTextObj);
+                pPage->RestoreDefaultText(pNotesTextObj, 
pNotesTextObj->GetCustomPromptText());
         }
         else
             setNotesToDoc();
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index c6da08c44f29..5f139cb620b4 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -592,7 +592,7 @@ void DrawView::DeleteMarked()
                     SdrTextObj* pTextObj = DynCastSdrTextObj( pObj );
                     bool bVertical = pTextObj && pTextObj->IsVerticalWriting();
                     ::tools::Rectangle aRect( pObj->GetLogicRect() );
-                    SdrObject* pNewObj = pPage->InsertAutoLayoutShape( 
nullptr, ePresObjKind, bVertical, aRect, true );
+                    SdrObject* pNewObj = pPage->InsertAutoLayoutShape(nullptr, 
ePresObjKind, bVertical, aRect, OUString(), true);
 
                     // pUndoManager should not be NULL (see assert above)
                     // but since we have defensive code
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index e6e66c77558d..ea1347ccc42b 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -1620,7 +1620,7 @@ void OutlineViewShell::UpdateTitleObject( SdPage* pPage, 
Paragraph const * pPara
                 // make it empty
                 if( pOlView->isRecordingUndo() )
                     
pOlView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoObjectSetText(*pTO,0));
-                pPage->RestoreDefaultText( pTO );
+                pPage->RestoreDefaultText( pTO, pTO->GetCustomPromptText() );
                 pTO->SetEmptyPresObj(true);
                 pTO->ActionChanged();
             }
@@ -1720,7 +1720,7 @@ void OutlineViewShell::UpdateOutlineObject( SdPage* 
pPage, Paragraph* pPara )
                 // delete old OutlinerParaObject, too
                 if( pOlView->isRecordingUndo() )
                     
pOlView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoObjectSetText(*pTO,0));
-                pPage->RestoreDefaultText( pTO );
+                pPage->RestoreDefaultText( pTO, pTO->GetCustomPromptText() );
                 pTO->SetEmptyPresObj(true);
                 pTO->ActionChanged();
             }
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index cf5d0e081ae6..256a505dd9e6 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -908,7 +908,7 @@ SdrTextObj* OutlineView::CreateTitleTextObject(SdPage* 
pPage)
     {
         // we already have a layout with a title but the title
         // object was deleted, create a new one
-        pPage->InsertAutoLayoutShape( nullptr, PresObjKind::Title, false, 
pPage->GetTitleRect(), true );
+        pPage->InsertAutoLayoutShape( nullptr, PresObjKind::Title, false, 
pPage->GetTitleRect(), OUString(), true );
     }
 
     return GetTitleTextObject(pPage);
@@ -944,7 +944,7 @@ SdrTextObj* OutlineView::CreateOutlineTextObject(SdPage* 
pPage)
         // object was deleted, create a new one
         pPage->InsertAutoLayoutShape( nullptr,
                                       PresObjKind::Outline,
-                                      false, pPage->GetLayoutRect(), true );
+                                      false, pPage->GetLayoutRect(), 
OUString(), true );
     }
 
     return GetOutlineTextObject(pPage);
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 5a6be3034fb8..4ae79b48177e 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -853,7 +853,7 @@ bool View::RestoreDefaultText( SdrTextObj* pTextObj )
 
             if(pPage)
             {
-                bRestored = pPage->RestoreDefaultText( pTextObj );
+                bRestored = pPage->RestoreDefaultText( pTextObj, 
pTextObj->GetCustomPromptText() );
                 if( bRestored )
                 {
                     SdrOutliner* pOutliner = GetTextEditOutliner();
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 4eb5146a0c0e..88226a6bfa1a 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1779,6 +1779,7 @@ bool SdrObject::Equals(const SdrObject& rOtherObj) const
     return (m_aAnchor.X() == rOtherObj.m_aAnchor.X() && m_aAnchor.Y() == 
rOtherObj.m_aAnchor.Y() &&
             m_nOrdNum == rOtherObj.m_nOrdNum && mnNavigationPosition == 
rOtherObj.mnNavigationPosition &&
             mbSupportTextIndentingOnLineWidthChange == 
rOtherObj.mbSupportTextIndentingOnLineWidthChange &&
+            m_aCustomPromptText == rOtherObj.m_aCustomPromptText &&
             mbLineIsOutsideGeometry == rOtherObj.mbLineIsOutsideGeometry && 
m_bMarkProt == rOtherObj.m_bMarkProt &&
             m_bIs3DObj == rOtherObj.m_bIs3DObj && m_bIsEdge == 
rOtherObj.m_bIsEdge && m_bClosedObj == rOtherObj.m_bClosedObj &&
             m_bNotVisibleAsMaster == rOtherObj.m_bNotVisibleAsMaster && 
m_bEmptyPresObj == rOtherObj.m_bEmptyPresObj &&
@@ -2578,6 +2579,10 @@ void SdrObject::SetEmptyPresObj(bool bEpt)
     m_bEmptyPresObj = bEpt;
 }
 
+void SdrObject::SetCustomPromptText(const OUString& rVal)
+{
+    m_aCustomPromptText = rVal;
+}
 
 void SdrObject::SetNotVisibleAsMaster(bool bFlg)
 {
diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index 672f89b2bb87..755b95c284f2 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -1726,6 +1726,12 @@ void SdrPage::MakePageObjectsNamesUnique()
     }
 }
 
+bool SdrPage::RestoreDefaultText(SdrObject* /*pObj*/, const OUString& /*rStr*/)
+{
+    assert(false);
+    return false;
+}
+
 const SdrPageGridFrameList* SdrPage::GetGridFrameList(const SdrPageView* 
/*pPV*/, const tools::Rectangle* /*pRect*/) const
 {
     return nullptr;
commit f1dffd7b792dcf2e8a06ad52896f3dd0c90d5881
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Tue Jul 29 16:22:25 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:10 2025 +0200

    tdf#166882 - sd odf clipboard: fix missing copy/pasted graphic bullets
    
    Export/import to/from odf clipboard the bitmap of the graphic bullets
    numbering rules.
    
    This is a follow up commit of: 66ed51712bb323bba7d1a0b0d21b256e5f5f9ccf
    (Bug 128046 - List hierachy not maintained on copy'n'paste)
    
    With this extra patch we can also copy/paste the graphic bullets
    numbering rules together with their texts. However, this goes against
    the MS Office and OnlyOffice behaviour, where copying text/paragraphs
    only copies the text, not the list rules. So if we would just want to follow
    that way, it would be enough to remove UNO_NAME_NUMBERING_RULES, 
EE_PARA_NUMBULLET
    from SvxXMLTextImportComponentPropertyMap and 
SvxXMLTextExportComponentPropertyMap
    
    See more info in:
    https://bugs.documentfoundation.org/show_bug.cgi?id=166882#c5
    
    Change-Id: I3c0b7389adf0d8efee95cc94f02905c3600342c8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188532
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188729
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/editeng/source/xml/xmltxtexp.cxx b/editeng/source/xml/xmltxtexp.cxx
index feab612a9d9d..4b29cd700544 100644
--- a/editeng/source/xml/xmltxtexp.cxx
+++ b/editeng/source/xml/xmltxtexp.cxx
@@ -265,7 +265,7 @@ SvxXMLTextExportComponent::SvxXMLTextExportComponent(
     const ESelection& rSel,
     const css::uno::Reference< css::xml::sax::XDocumentHandler > & xHandler)
 :   SvXMLExport( xContext, u""_ustr, /*rFileName*/u""_ustr, xHandler, 
static_cast<frame::XModel*>(new SvxSimpleUnoModel()), FieldUnit::CM,
-    SvXMLExportFlags::OASIS  |  SvXMLExportFlags::AUTOSTYLES  |  
SvXMLExportFlags::CONTENT )
+    SvXMLExportFlags::OASIS  |  SvXMLExportFlags::AUTOSTYLES  |  
SvXMLExportFlags::CONTENT  |  SvXMLExportFlags::EMBEDDED )
 {
     SvxEditEngineSource aEditSource( pEditEngine );
 
diff --git a/include/xmloff/xmlexp.hxx b/include/xmloff/xmlexp.hxx
index e02d864c3f34..4ff51e19bc50 100644
--- a/include/xmloff/xmlexp.hxx
+++ b/include/xmloff/xmlexp.hxx
@@ -99,7 +99,7 @@ enum class SvXMLExportFlags {
     SCRIPTS                  = 0x0020,
     SETTINGS                 = 0x0040,
     FONTDECLS                = 0x0080,
-    EMBEDDED                 = 0x0100,
+    EMBEDDED                 = 0x0100, // for flat-ODF export
     PRETTY                   = 0x0400,
     OASIS                    = 0x8000,
     ALL                      = 0x05ff
diff --git a/sd/qa/unit/tiledrendering/data/tdf166882.odp 
b/sd/qa/unit/tiledrendering/data/tdf166882.odp
new file mode 100644
index 000000000000..f6ca6a5f1a93
Binary files /dev/null and b/sd/qa/unit/tiledrendering/data/tdf166882.odp differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 3892b36b5a85..5b8e6bd3c2a1 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -1114,73 +1114,80 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testPostKeyEventInvalidation)
 }
 
 /**
- * tests a cut/paste bug around bullet items in a list
+ * tests a cut/paste bug around bullet items in a list and
+ * graphic (bitmap) bullet items in a list (Tdf103083, Tdf166882)
  */
-CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testTdf103083)
+CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testClipNumRules)
 {
-    // Load the document.
-    SdXImpressDocument* pXImpressDocument = createDoc("tdf103083.fodp");
-    sd::ViewShell* pViewShell = 
pXImpressDocument->GetDocShell()->GetViewShell();
-    SdPage* pActualPage = pViewShell->GetActualPage();
-
-    SdrObject* pObject1 = pActualPage->GetObj(1);
-    CPPUNIT_ASSERT_EQUAL(SdrObjKind::OutlineText, 
pObject1->GetObjIdentifier());
-    SdrTextObj* pTextObject = static_cast<SdrTextObj*>(pObject1);
-
-    SdrView* pView = pViewShell->GetView();
-
-    // select contents of bullet item
-    ::tools::Rectangle aRect = pTextObject->GetCurrentBoundRect();
-    pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN,
-                                      o3tl::toTwips(aRect.Left() + 2, 
o3tl::Length::mm100), o3tl::toTwips(aRect.Top() + 2, o3tl::Length::mm100),
-                                      1, MOUSE_LEFT, 0);
-    pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP,
-                                      o3tl::toTwips(aRect.Left() + 2, 
o3tl::Length::mm100), o3tl::toTwips(aRect.Top() + 2, o3tl::Length::mm100),
-                                      1, MOUSE_LEFT, 0);
-    Scheduler::ProcessEventsToIdle();
-    pView->SdrBeginTextEdit(pTextObject);
-    CPPUNIT_ASSERT(pView->GetTextEditObject());
-    EditView& rEditView = pView->GetTextEditOutlinerView()->GetEditView();
-    rEditView.SetSelection(ESelection(2, 0, 2, 33)); // start para, start 
char, end para, end char.
-    CPPUNIT_ASSERT_EQUAL(u"They have all the same formatting"_ustr, 
rEditView.GetSelected());
-    SdrOutliner* pOutliner = pView->GetTextEditOutliner();
-    CPPUNIT_ASSERT_EQUAL(u"No-Logo Content~LT~Gliederung 2"_ustr,
-                         pOutliner->GetStyleSheet(2)->GetName());
-    const EditTextObject& aEdit = 
pTextObject->GetOutlinerParaObject()->GetTextObject();
-    const SvxNumBulletItem* pNumFmt = 
aEdit.GetParaAttribs(2).GetItem(EE_PARA_NUMBULLET);
-    SvxNumberFormat aNumFmt(pNumFmt->GetNumRule().GetLevel(2));
-
-    // cut contents of bullet item
-    dispatchCommand(mxComponent, u".uno:Cut"_ustr, 
uno::Sequence<beans::PropertyValue>());
-
-    CPPUNIT_ASSERT(pView->GetTextEditObject());
-    EditView& rEditView2 = pView->GetTextEditOutlinerView()->GetEditView();
-    rEditView2.SetSelection(ESelection(2, 0, 2, 10)); // start para, start 
char, end para, end char.
-    CPPUNIT_ASSERT_EQUAL(OUString(), rEditView2.GetSelected());
-
-    // paste contents of bullet item
-    dispatchCommand(mxComponent, u".uno:Paste"_ustr, 
uno::Sequence<beans::PropertyValue>());
-
-    // send an ESC key to trigger the commit of the edit to the main model
-    pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, 
awt::Key::ESCAPE);
-    pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::ESCAPE);
-    Scheduler::ProcessEventsToIdle();
+    std::vector<const char*> aFileNames = { "tdf103083.fodp", "tdf166882.odp" 
};
+    for (const char* pFileName : aFileNames)
+    {
+        // Load the document.
+        SdXImpressDocument* pXImpressDocument = createDoc(pFileName);
+        CPPUNIT_ASSERT(pXImpressDocument);
+
+        sd::ViewShell* pViewShell = 
pXImpressDocument->GetDocShell()->GetViewShell();
+        SdPage* pActualPage = pViewShell->GetActualPage();
+
+        SdrObject* pObject1 = pActualPage->GetObj(1);
+        CPPUNIT_ASSERT_EQUAL(SdrObjKind::OutlineText, 
pObject1->GetObjIdentifier());
+        SdrTextObj* pTextObject = static_cast<SdrTextObj*>(pObject1);
+
+        SdrView* pView = pViewShell->GetView();
+
+        // select contents of bullet item
+        ::tools::Rectangle aRect = pTextObject->GetCurrentBoundRect();
+        pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN,
+            o3tl::toTwips(aRect.Left() + 2, o3tl::Length::mm100), 
o3tl::toTwips(aRect.Top() + 2, o3tl::Length::mm100),
+            1, MOUSE_LEFT, 0);
+        pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP,
+            o3tl::toTwips(aRect.Left() + 2, o3tl::Length::mm100), 
o3tl::toTwips(aRect.Top() + 2, o3tl::Length::mm100),
+            1, MOUSE_LEFT, 0);
+        Scheduler::ProcessEventsToIdle();
+        pView->SdrBeginTextEdit(pTextObject);
+        CPPUNIT_ASSERT(pView->GetTextEditObject());
+        EditView& rEditView = pView->GetTextEditOutlinerView()->GetEditView();
+        rEditView.SetSelection(ESelection(2, 0, 2, 33)); // start para, start 
char, end para, end char.
+        CPPUNIT_ASSERT_EQUAL(u"They have all the same formatting"_ustr, 
rEditView.GetSelected());
+        SdrOutliner* pOutliner = pView->GetTextEditOutliner();
+        CPPUNIT_ASSERT_EQUAL(u"No-Logo Content~LT~Gliederung 2"_ustr,
+            pOutliner->GetStyleSheet(2)->GetName());
+        const EditTextObject& aEdit = 
pTextObject->GetOutlinerParaObject()->GetTextObject();
+        const SvxNumBulletItem* pNumFmt = 
aEdit.GetParaAttribs(2).GetItem(EE_PARA_NUMBULLET);
+        SvxNumberFormat aNumFmt(pNumFmt->GetNumRule().GetLevel(2));
+
+        // cut contents of bullet item
+        dispatchCommand(mxComponent, u".uno:Cut"_ustr, 
uno::Sequence<beans::PropertyValue>());
+
+        CPPUNIT_ASSERT(pView->GetTextEditObject());
+        EditView& rEditView2 = pView->GetTextEditOutlinerView()->GetEditView();
+        rEditView2.SetSelection(ESelection(2, 0, 2, 10)); // start para, start 
char, end para, end char.
+        CPPUNIT_ASSERT_EQUAL(OUString(), rEditView2.GetSelected());
+
+        // paste contents of bullet item
+        dispatchCommand(mxComponent, u".uno:Paste"_ustr, 
uno::Sequence<beans::PropertyValue>());
+
+        // send an ESC key to trigger the commit of the edit to the main model
+        pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, 
awt::Key::ESCAPE);
+        pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, 
awt::Key::ESCAPE);
+        Scheduler::ProcessEventsToIdle();
 
-    pView->SdrBeginTextEdit(pTextObject);
-    CPPUNIT_ASSERT(pView->GetTextEditObject());
-    pOutliner = pView->GetTextEditOutliner();
-    EditView& rEditView3 = pView->GetTextEditOutlinerView()->GetEditView();
-    rEditView3.SetSelection(ESelection(2, 0, 2, 33)); // start para, start 
char, end para, end char.
-    CPPUNIT_ASSERT_EQUAL(u"They have all the same formatting"_ustr, 
rEditView3.GetSelected());
-    CPPUNIT_ASSERT_EQUAL(u"No-Logo Content~LT~Gliederung 2"_ustr,
-                         pOutliner->GetStyleSheet(2)->GetName());
-
-    const EditTextObject& aEdit2 = 
pTextObject->GetOutlinerParaObject()->GetTextObject();
-    const SvxNumBulletItem* pNumFmt2 = 
aEdit2.GetParaAttribs(2).GetItem(EE_PARA_NUMBULLET);
-    SvxNumberFormat aNumFmt2(pNumFmt2->GetNumRule().GetLevel(2));
-
-    bool bEqual(aNumFmt2 == aNumFmt);
-    CPPUNIT_ASSERT_MESSAGE("Bullet properties changed after paste", bEqual);
+        pView->SdrBeginTextEdit(pTextObject);
+        CPPUNIT_ASSERT(pView->GetTextEditObject());
+        pOutliner = pView->GetTextEditOutliner();
+        EditView& rEditView3 = pView->GetTextEditOutlinerView()->GetEditView();
+        rEditView3.SetSelection(ESelection(2, 0, 2, 33)); // start para, start 
char, end para, end char.
+        CPPUNIT_ASSERT_EQUAL(u"They have all the same formatting"_ustr, 
rEditView3.GetSelected());
+        CPPUNIT_ASSERT_EQUAL(u"No-Logo Content~LT~Gliederung 2"_ustr,
+            pOutliner->GetStyleSheet(2)->GetName());
+
+        const EditTextObject& aEdit2 = 
pTextObject->GetOutlinerParaObject()->GetTextObject();
+        const SvxNumBulletItem* pNumFmt2 = 
aEdit2.GetParaAttribs(2).GetItem(EE_PARA_NUMBULLET);
+        SvxNumberFormat aNumFmt2(pNumFmt2->GetNumRule().GetLevel(2));
+
+        bool bEqual(aNumFmt2 == aNumFmt);
+        CPPUNIT_ASSERT_MESSAGE("Bullet properties changed after paste", 
bEqual);
+    }
 }
 
 /**
diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx
index 4d77d6bc26db..a5524b33f416 100644
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@ -1242,7 +1242,10 @@ ErrCode SvXMLExport::exportDoc( enum 
::xmloff::token::XMLTokenEnum eClass )
             {
                 if (!mxGraphicStorageHandler.is())
                 {
-                    mxGraphicStorageHandler.set(xFactory->createInstance( 
u"com.sun.star.document.ExportGraphicStorageHandler"_ustr), UNO_QUERY);
+                    mxGraphicStorageHandler.set(
+                        
getComponentContext()->getServiceManager()->createInstanceWithArgumentsAndContext(
+                        u"com.sun.star.comp.Svx.GraphicExportHelper"_ustr, 
uno::Sequence<uno::Any>(), getComponentContext()),
+                        uno::UNO_QUERY );
                     bOwnGraphicResolver = mxGraphicStorageHandler.is();
                 }
 
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index 94bf7e41b7a7..886b8f10d6df 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -589,8 +589,9 @@ void SAL_CALL SvXMLImport::startDocument()
         {
             // #99870# Import... instead of Export...
             mxGraphicStorageHandler.set(
-                
xFactory->createInstance(u"com.sun.star.document.ImportGraphicStorageHandler"_ustr),
-                UNO_QUERY);
+                
GetComponentContext()->getServiceManager()->createInstanceWithArgumentsAndContext(
+                u"com.sun.star.comp.Svx.GraphicImportHelper"_ustr, 
uno::Sequence<uno::Any>(), GetComponentContext()),
+                uno::UNO_QUERY );
             mpImpl->mbOwnGraphicResolver = mxGraphicStorageHandler.is();
         }
 
commit fbae160d8bcf29bb5747c4a65a3a7945285f385b
Author:     Balazs Varga <balazs.va...@collabora.com>
AuthorDate: Thu Jul 17 18:32:29 2025 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Aug 19 15:37:10 2025 +0200

    tdf#167468 - sc: fix XMATCH with mode=0 and searchdirection=-1
    
    returns wrong value.
    
    Off-by-one error during the calculation of the result with Reverse
    search mode.
    
    follow-up of XMatch implementation: c9245c153d349ee414fdd4f878fd10cbd8471cff
    
    Co-authored-by: Regina Henschel <rb.hensc...@t-online.de>
    
    Change-Id: If77289d314f5960c19911c889f8d5b8eb0b839cf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188019
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.va...@collabora.com>
    (cherry picked from commit 649346506b8ec0670e35d30c5e04358e40244c36)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188242
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods 
b/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods
index c5156957acde..fa17e53c03cc 100644
--- a/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods
+++ b/sc/qa/unit/data/functions/spreadsheet/fods/xmatch.fods
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <office:document 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:ooow="http://openoffice.org/200
 4/writer" xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:xforms="http://www.w3.org/2002/xforms"; 
xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
 xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" 
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; xmlns
 :css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" 
office:version="1.4" 
office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
- 
<office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT3H3M8S</meta:editing-duration><meta:editing-cycles>58</meta:editing-cycles><meta:generator>LibreOfficeDev/25.2.0.0.alpha0$Windows_X86_64
 
LibreOffice_project/a379e033425053885724b163147892f21830bca0</meta:generator><dc:date>2024-11-03T18:27:19.548583300</dc:date><meta:document-statistic
 meta:table-count="2" meta:cell-count="305" 
meta:object-count="0"/></office:meta>
+ 
<office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT3H22M31S</meta:editing-duration><meta:editing-cycles>63</meta:editing-cycles><meta:generator>LibreOfficeDev/26.2.0.0.alpha0$Windows_X86_64
 
LibreOffice_project/f6b6eff1b754de1a9f5f6a79b7aad53604c87cf5</meta:generator><dc:date>2025-07-17T17:30:05.339473200</dc:date><meta:document-statistic
 meta:table-count="2" meta:cell-count="337" 
meta:object-count="0"/></office:meta>
  <office:settings>
   <config:config-item-set config:name="ooo:view-settings">
    <config:config-item config:name="VisibleAreaTop" 
config:type="int">0</config:config-item>
    <config:config-item config:name="VisibleAreaLeft" 
config:type="int">0</config:config-item>
-   <config:config-item config:name="VisibleAreaWidth" 
config:type="int">15882</config:config-item>
-   <config:config-item config:name="VisibleAreaHeight" 
config:type="int">5013</config:config-item>
+   <config:config-item config:name="VisibleAreaWidth" 
config:type="int">54095</config:config-item>
+   <config:config-item config:name="VisibleAreaHeight" 
config:type="int">19417</config:config-item>
    <config:config-item-map-indexed config:name="Views">
     <config:config-item-map-entry>
      <config:config-item config:name="ViewId" 
config:type="string">view1</config:config-item>
@@ -31,7 +31,7 @@
       </config:config-item-map-entry>
       <config:config-item-map-entry config:name="Sheet2">
        <config:config-item config:name="CursorPositionX" 
config:type="int">3</config:config-item>
-       <config:config-item config:name="CursorPositionY" 
config:type="int">37</config:config-item>
+       <config:config-item config:name="CursorPositionY" 
config:type="int">43</config:config-item>
        <config:config-item config:name="ActiveSplitRange" 
config:type="short">2</config:config-item>
        <config:config-item config:name="PositionLeft" 
config:type="int">0</config:config-item>
        <config:config-item config:name="PositionRight" 
config:type="int">0</config:config-item>
@@ -59,7 +59,7 @@
      <config:config-item config:name="ShowFormulasMarks" 
config:type="boolean">false</config:config-item>
      <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
      <config:config-item config:name="GridColor" 
config:type="int">12632256</config:config-item>
-     <config:config-item config:name="FormulaBarHeight" 
config:type="short">1</config:config-item>
+     <config:config-item config:name="ShowPageBreaks" 
config:type="boolean">true</config:config-item>
      <config:config-item config:name="HasColumnRowHeaders" 
config:type="boolean">true</config:config-item>
      <config:config-item config:name="HasSheetTabs" 
config:type="boolean">true</config:config-item>
      <config:config-item config:name="IsOutlineSymbolsSet" 
config:type="boolean">true</config:config-item>
@@ -71,6 +71,7 @@
      <config:config-item config:name="RasterSubdivisionX" 
config:type="int">1</config:config-item>
      <config:config-item config:name="RasterSubdivisionY" 
config:type="int">1</config:config-item>
      <config:config-item config:name="IsRasterAxisSynchronized" 
config:type="boolean">true</config:config-item>
+     <config:config-item config:name="FormulaBarHeight" 
config:type="short">1</config:config-item>
      <config:config-item config:name="AnchoredTextOverflowLegacy" 
config:type="boolean">false</config:config-item>
      <config:config-item config:name="LegacySingleLineFontwork" 
config:type="boolean">false</config:config-item>
      <config:config-item config:name="ConnectorUseSnapRect" 
config:type="boolean">false</config:config-item>
@@ -79,34 +80,15 @@
    </config:config-item-map-indexed>
   </config:config-item-set>
   <config:config-item-set config:name="ooo:configuration-settings">
-   <config:config-item config:name="ShowZeroValues" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ShowNotes" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AllowPrintJobCancel" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ApplyUserData" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="AutoCalculate" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="CharacterCompressionType" 
config:type="short">0</config:config-item>
+   <config:config-item config:name="EmbedAsianScriptFonts" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="EmbedComplexScriptFonts" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ShowNoteAuthor" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ShowFormulasMarks" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="PrinterSetup" 
config:type="base64Binary">bBb+/01pY3Jvc29mdCBQcmludCB0byBQREYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATWljcm9zb2Z0IFByaW50IFRvIFBERgAAAAAAAAAAAAAWAAEAPhUAAAAAAAAEAAhSAAAEdAAAM1ROVwAAAAAKAE0AaQBjAHIAbwBzAG8AZgB0ACAAUAByAGkAbgB0ACAAdABvACAAUABEAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAMG3ABYFAMtAQABAAkAmgs0CGQAAQAPAFgCAgABAFgCAwABAEEANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAABAAAA/////0dJUzQAAAAAAAAAAAAAAABESU5VIgDQACwDLBHiXo1TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAABkAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAFNNVEoAAAAAEADAAHsAMAA4ADQARgAwADEARgBBAC0ARQA2ADMANAAtADQARAA3ADcALQA4ADMARQBFAC0AMAA3ADQAOAAxADcAQwAwADMANQA4ADEAfQAAAFJFU0RMTABVbmlyZXNETEwAUGFwZXJTaXplAEE0AE9yaWVudGF0aW9uAFBPUlRSQUlUAFJlc29sdXRpb24AUmVzT3B0aW9uMQBDb2xvck1vZGUAQ29sb3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwRAABWNERNAQAAAAAAAACcCnAiHAAAAOwAAAADAAAA+gFPCDTmd02D7gdIF8A1gdAAAABMAAAAAwAAAAAIAAAAAAAAAAAAAAMAAAAACAAAKgAAAAAIAAADAAAAQAAAAFYAAAAAEAAARABvAGMAdQBtAGUAbgB0AFUAcwBlAHIAUABhAHMAcwB3AG8AcgBkAAAARABvAGMAdQBtAGUAbgB0AE8AdwBuAGUAcgBQAGEAcwBzAHcAbwByAGQAAABEAG8AYwB1AG0AZQBuAHQAQwByA
 
HkAcAB0AFMAZQBjAHUAcgBpAHQAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAENPTVBBVF9EVVBMRVhfTU9ERRMARHVwbGV4TW9kZTo6VW5rbm93bgwAUFJJTlRFUl9OQU1FFgBNaWNyb3NvZnQgUHJpbnQgdG8gUERGCwBEUklWRVJfTkFNRRYATWljcm9zb2Z0IFByaW50IFRvIFBERg==</config:config-item>
-   <config:config-item config:name="ShowGrid" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="GridColor" 
config:type="int">12632256</config:config-item>
-   <config:config-item config:name="ShowPageBreaks" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="IsKernAsianPunctuation" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="LinkUpdateMode" 
config:type="short">3</config:config-item>
-   <config:config-item config:name="HasColumnRowHeaders" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="EmbedFonts" 
config:type="boolean">false</config:config-item>
    <config:config-item config:name="EmbedLatinScriptFonts" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="HasSheetTabs" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="IsOutlineSymbolsSet" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="IsSnapToRaster" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="RasterIsVisible" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="RasterResolutionX" 
config:type="int">1270</config:config-item>
-   <config:config-item config:name="RasterResolutionY" 
config:type="int">1270</config:config-item>
-   <config:config-item config:name="RasterSubdivisionX" 
config:type="int">1</config:config-item>
-   <config:config-item config:name="RasterSubdivisionY" 
config:type="int">1</config:config-item>
-   <config:config-item config:name="IsRasterAxisSynchronized" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="AutoCalculate" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="ApplyUserData" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="PrinterName" 
config:type="string">Microsoft Print to PDF</config:config-item>
-   <config:config-item config:name="ImagePreferredDPI" 
config:type="int">0</config:config-item>
-   <config:config-item config:name="PrinterPaperFromSetup" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="SaveThumbnail" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="EmbedOnlyUsedFonts" 
config:type="boolean">false</config:config-item>
    <config:config-item-map-indexed config:name="ForbiddenCharacters">
     <config:config-item-map-entry>
      <config:config-item config:name="Language" 
config:type="string">de</config:config-item>
@@ -123,16 +105,35 @@
      <config:config-item config:name="EndLine" config:type="string"/>
     </config:config-item-map-entry>
    </config:config-item-map-indexed>
-   <config:config-item config:name="CharacterCompressionType" 
config:type="short">0</config:config-item>
-   <config:config-item config:name="SaveVersionOnClose" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="UpdateFromTemplate" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="AllowPrintJobCancel" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="LoadReadonly" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="GridColor" 
config:type="int">12632256</config:config-item>
+   <config:config-item config:name="HasColumnRowHeaders" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="HasSheetTabs" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="ImagePreferredDPI" 
config:type="int">0</config:config-item>
    <config:config-item config:name="IsDocumentShared" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="EmbedFonts" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="EmbedOnlyUsedFonts" 
config:type="boolean">false</config:config-item>
-   <config:config-item config:name="EmbedAsianScriptFonts" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="IsKernAsianPunctuation" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="IsOutlineSymbolsSet" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="IsRasterAxisSynchronized" 
config:type="boolean">true</config:config-item>
+   <config:config-item config:name="IsSnapToRaster" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="LinkUpdateMode" 
config:type="short">3</config:config-item>
+   <config:config-item config:name="LoadReadonly" 
config:type="boolean">false</config:config-item>
+   <config:config-item config:name="PrinterName" 
config:type="string">Microsoft Print to PDF</config:config-item>
+   <config:config-item config:name="PrinterPaperFromSetup" 
config:type="boolean">false</config:config-item>
-e 
... etc. - the rest is truncated

Reply via email to