sd/qa/unit/SVGExportTests.cxx |   60 +++++++++++++++++++++---------------------
 sd/source/core/stlpool.cxx    |   32 ++++++++++++++--------
 2 files changed, 51 insertions(+), 41 deletions(-)

New commits:
commit aa1d053b844f3f3413302848a9a680ec213b28dd
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jan 20 11:45:12 2025 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Feb 6 10:12:12 2025 +0100

    tdf#164640 List bullets formatting changed
    
    revert part of
        commit 76319347a83aecee7a423a614d67287182b31b00
        Author: Noel Grandin <noel.gran...@collabora.co.uk>
        Date:   Mon Oct 21 09:26:31 2024 +0200
        set stylesheet parent at creation time
    
    Change-Id: Iabbfabc1412af54b76c0ac04d2e887a15a4cbbad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180499
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    (cherry picked from commit ef5a350b75b8ff31dce6fa016d6ca8b920164a9f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180505
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sd/qa/unit/SVGExportTests.cxx b/sd/qa/unit/SVGExportTests.cxx
index bcd0b2908f06..68d73bee89db 100644
--- a/sd/qa/unit/SVGExportTests.cxx
+++ b/sd/qa/unit/SVGExportTests.cxx
@@ -131,20 +131,20 @@ public:
         xmlDocUniquePtr svgDoc = parseXml(maTempFile);
         CPPUNIT_ASSERT(svgDoc);
 
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10]/SVG_G[2] ), 
"class", u"Master_Slide");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2] ), "class", u"BackgroundObjects");
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9]/SVG_G[2] ), 
"class", u"Master_Slide");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2] ), "class", u"BackgroundObjects");
         // Current Date Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[4] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[4]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText Date");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[4] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[4]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText Date");
         // Current Time Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[5] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[5]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText Time");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[5] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[5]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText Time");
         // Slide Name Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[6] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[6]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageName");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[6] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[6]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageName");
         // Slide Number Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[7] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[7]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageNumber");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[7] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[7]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageNumber");
     }
 
     void testSVGExportEmbeddedVideo()
@@ -186,10 +186,10 @@ public:
         xmlDocUniquePtr svgDoc = parseXml(maTempFile);
         CPPUNIT_ASSERT(svgDoc);
 
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10] ), "class", 
u"BackgroundBitmaps");
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10]/SVG_IMAGE ), 
1);
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9] ), "class", 
u"BackgroundBitmaps");
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9]/SVG_IMAGE ), 
1);
 
-        OUString sImageId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_IMAGE ), "id");
+        OUString sImageId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_IMAGE ), "id");
         CPPUNIT_ASSERT_MESSAGE(OString("The exported bitmap has not a valid 
id: " + sImageId.toUtf8()).getStr(), isValidBitmapId(sImageId));
 
         BitmapChecksum nChecksum = getBitmapChecksumFromId(sImageId);
@@ -216,39 +216,39 @@ public:
         CPPUNIT_ASSERT(svgDoc);
 
         // check the bitmap
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10] ), "class", 
u"BackgroundBitmaps");
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10]/SVG_IMAGE ), 
1);
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9] ), "class", 
u"BackgroundBitmaps");
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9]/SVG_IMAGE ), 
1);
 
         // check the pattern and background rectangle
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[11] ), "class", 
u"BackgroundPatterns");
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[11]/SVG_PATTERN 
), 1);
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_PATTERN/SVG_USE ), 1);
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_G/SVG_RECT ), 1);
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10] ), "class", 
u"BackgroundPatterns");
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10]/SVG_PATTERN 
), 1);
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_PATTERN/SVG_USE ), 1);
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G/SVG_RECT ), 1);
 
 
         // check that <pattern><use> is pointing to the correct <image>
-        OUString sImageId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_IMAGE ), "id");
+        OUString sImageId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_IMAGE ), "id");
         CPPUNIT_ASSERT_MESSAGE(OString("The exported bitmap has not a valid 
id: " + sImageId.toUtf8()).getStr(), isValidBitmapId(sImageId));
 
         BitmapChecksum nChecksum = getBitmapChecksumFromId(sImageId);
         CPPUNIT_ASSERT_MESSAGE(OString("The exported bitmap has not a valid 
checksum: " + sImageId.toUtf8()).getStr(), nChecksum != 0);
 
-        OUString sRef = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_PATTERN/SVG_USE ), "href");
+        OUString sRef = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_PATTERN/SVG_USE ), "href");
         CPPUNIT_ASSERT_MESSAGE("The <pattern><use> element has not a valid 
href attribute: starting '#' not present.", sRef.startsWith("#"));
         sRef = sRef.copy(1);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("The href attribute for <pattern><use> 
does not match the <image> id attribute: ", sImageId, sRef);
 
-        OUString sPatternId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_PATTERN ), "id");
+        OUString sPatternId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_PATTERN ), "id");
         CPPUNIT_ASSERT_MESSAGE(OString("The exported pattern has not a valid 
id: " + sPatternId.toUtf8()).getStr(), isValidBackgroundPatternId(sPatternId));
 
-        OUString sFillUrl = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_G/SVG_RECT ), "fill");
+        OUString sFillUrl = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G/SVG_RECT ), "fill");
         bool bIsUrlFormat = sFillUrl.startsWith("url(#") && 
sFillUrl.endsWith(")");
         CPPUNIT_ASSERT_MESSAGE("The fill attribute for the <rectangle> element 
has not a url format .", bIsUrlFormat);
         // remove "url(#" and ")"
         sFillUrl = sFillUrl.copy(5, sFillUrl.getLength() - 6);
         CPPUNIT_ASSERT_EQUAL_MESSAGE("The fill url for <rectangle> does not 
match the <pattern> id attribute: ", sPatternId, sFillUrl);
 
-        OUString sBackgroundId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[11]/SVG_G ), "id");
+        OUString sBackgroundId = getXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G ), "id");
         CPPUNIT_ASSERT_MESSAGE(OString("The exported tiled background has not 
a valid id: " + sBackgroundId.toUtf8()).getStr(), 
isValidTiledBackgroundId(sBackgroundId));
 
         // check <use> element that point to the tiled background
@@ -280,15 +280,15 @@ public:
         xmlDocUniquePtr svgDoc = parseXml(maTempFile);
         CPPUNIT_ASSERT(svgDoc);
 
-        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[10]/SVG_G[2] ), 
"class", u"Master_Slide");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2] ), "class", u"BackgroundObjects");
+        assertXPath(svgDoc, SAL_STRINGIFY( /SVG_SVG/SVG_DEFS[9]/SVG_G[2] ), 
"class", u"Master_Slide");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2] ), "class", u"BackgroundObjects");
 
         // Slide Name Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[6] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[6]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageName");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[6] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[6]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageName");
         // Slide Number Field
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[7] ), "class", u"TextShape");
-        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[10]/SVG_G[2]/SVG_G[2]/SVG_G[7]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageNumber");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[7] ), "class", u"TextShape");
+        assertXPath(svgDoc, SAL_STRINGIFY( 
/SVG_SVG/SVG_DEFS[9]/SVG_G[2]/SVG_G[2]/SVG_G[7]/SVG_G/SVG_TEXT/SVG_TSPAN/SVG_TSPAN/SVG_TSPAN
 ), "class", u"PlaceholderText PageNumber");
     }
 
     CPPUNIT_TEST_SUITE(SdSVGFilterTest);
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index 8ecda5046c51..23a41e8df5cf 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -213,18 +213,10 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
         {
             bCreated = true;
 
-            OUString sParentStyleSheetName;
-            // if we created outline styles, we need to chain them
-            if (nLevel > 1)
-            {
-                OUString aPreviousLevelName( aPrefix + aName + " " + 
OUString::number( nLevel-1 ) );
-                SfxStyleSheetBase* pParent = Find(aPreviousLevelName, 
SfxStyleFamily::Page);
-                if (pParent)
-                    sParentStyleSheetName = pParent->GetName();
-            }
-
-            pSheet = &Make(aLevelName, SfxStyleFamily::Page, nUsedMask, 
sParentStyleSheetName);
+            pSheet = &Make(aLevelName, SfxStyleFamily::Page,nUsedMask);
             pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_OUTLINE + nLevel );
+            pSheet->SetParent( OUString() );
+
 
             // attributing for level 1, the others levels inherit
             if (nLevel == 1)
@@ -307,6 +299,24 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
         }
     }
 
+    // if we created outline styles, we need to chain them
+    if( bCreated )
+    {
+        SfxStyleSheetBase* pParent = nullptr;
+        for (sal_Int32 nLevel = 1; nLevel < 10; nLevel++)
+        {
+            OUString aLevelName( aPrefix + aName + " " + OUString::number( 
nLevel ) );
+            pSheet = Find(aLevelName, SfxStyleFamily::Page);
+            DBG_ASSERT( pSheet, "missing layout style!");
+            if( pSheet )
+            {
+                if (pParent)
+                    pSheet->SetParent(pParent->GetName());
+                pParent = pSheet;
+            }
+        }
+    }
+
     /**************************************************************************
     * Title
     **************************************************************************/

Reply via email to