sw/qa/extras/layout/layout.cxx |  558 ++++++++++++++++++++++++++++-------------
 1 file changed, 388 insertions(+), 170 deletions(-)

New commits:
commit fe2c9ca1bcf31d553c2142c4c282158c8e6429ae
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Thu May 26 20:22:11 2022 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Fri May 27 08:03:15 2022 +0200

    CppunitTest_sw_layoutwriter: use more SwParaPortion::dumpAsXml()
    
    See commit feeed3e762cf077fbd9cf48f82e949365108ccc1
    (CppunitTest_sw_layoutwriter: avoid some a11y-based layout testing,
    2022-04-07) for motivation.
    
    Change-Id: Icbf2c3b4c1dfcdf551ea8c1f1f9520449b55289a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135029
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index e3af733c48f1..e42f5c22b83a 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -1353,13 +1353,22 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
                     "7");
         assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/merged",
                     "paraPropsNodeIndex", "17");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "ahi");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "ahi");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
 
         dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
         CPPUNIT_ASSERT(!pLayout->IsHideRedlines());
@@ -1373,57 +1382,122 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
             xmlXPathFreeObject(pXmlObj);
         }
 
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "rText", 
"1");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "rText", 
"2");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "quux");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "a");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/Text[2]",
-                    "Portion", "bc");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[2]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[2]/Text[1]",
-                    "Portion", "def");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/Text[1]",
-                    "Portion", "g");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/Text[2]",
-                    "Portion", "hi");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"rText", "2");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"Portion", "fo");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"Portion", "o");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"nType",
-                    "PortionType::Para");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"Portion", "bar");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"Portion", "b");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"Portion", "az");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "expand", "1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[2]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[2]",
+                    "expand", "2");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "quux");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "a");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "bc");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "def");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "g");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[1]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "hi");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "2");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "fo");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "o");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "type", "PortionType::Para");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "portion", "bar");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "b");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "az");
     }
 
     // anchor to 2nd (deleted) paragraph
@@ -1452,14 +1526,22 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
         xmlDocUniquePtr pXmlDoc = parseLayoutDump();
 
         assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/merged", 
"paraPropsNodeIndex", "25");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "rText", 
"1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "expand", "1");
         assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/merged", 
"paraPropsNodeIndex",
                     "7");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
 
         { // hide: no anchored object shown
             xmlXPathObjectPtr pXmlObj = getXPathNode(pXmlDoc, "//anchored");
@@ -1480,57 +1562,122 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
             xmlXPathFreeObject(pXmlObj);
         }
 
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "rText", 
"1");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "rText", 
"2");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "quux");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"rText", "2");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"Portion", "fo");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"Portion", "o");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "a");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/Text[2]",
-                    "Portion", "bc");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[2]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[2]/Text[1]",
-                    "Portion", "def");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/Text[1]",
-                    "Portion", "g");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/Text[2]",
-                    "Portion", "hi");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"nType",
-                    "PortionType::Para");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"Portion", "bar");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"Portion", "b");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"Portion", "az");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "expand", "1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[2]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[2]",
+                    "expand", "2");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "quux");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "2");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "fo");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "o");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "a");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "bc");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "def");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "g");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[2]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "hi");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "type", "PortionType::Para");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "portion", "bar");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "b");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "az");
     }
 
     // anchor to 3rd paragraph
@@ -1559,20 +1706,32 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
         discardDumpedLayout();
         xmlDocUniquePtr pXmlDoc = parseLayoutDump();
         assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/merged", 
"paraPropsNodeIndex", "25");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "nType",
-                    "PortionType::Footnote");
-        assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[1]", "rText", 
"1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "type", "PortionType::Footnote");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/body/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+                    "expand", "1");
         assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/merged", 
"paraPropsNodeIndex",
                     "7");
         assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/merged",
                     "paraPropsNodeIndex", "17");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "ahi");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "ahi");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
 
         dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {});
         CPPUNIT_ASSERT(!pLayout->IsHideRedlines());
@@ -1592,51 +1751,110 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, 
testRedlineFlysInFootnote)
         assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "nType",
                     "PortionType::Footnote");
         assertXPath(pXmlDoc, "/root/page[1]/body/txt[1]/Special[2]", "rText", 
"2");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "quux");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[1]/txt[1]/Special[1]", 
"rText", "1");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"nType",
-                    "PortionType::FootnoteNum");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Special[1]", 
"rText", "2");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[1]", 
"Portion", "fo");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[1]/Text[2]", 
"Portion", "o");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"nType",
-                    "PortionType::Para");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[2]/Text[1]", 
"Portion", "bar");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/Text[1]",
-                    "Portion", "a");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/Text[2]",
-                    "Portion", "bc");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[2]/Text[1]",
-                    "nType", "PortionType::Para");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[2]/Text[1]",
-                    "Portion", "def");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/Text[1]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/Text[1]",
-                    "Portion", "g");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/Text[2]",
-                    "nType", "PortionType::Text");
-        assertXPath(pXmlDoc, 
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/Text[2]",
-                    "Portion", "hi");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[1]", 
"Portion", "b");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"nType",
-                    "PortionType::Text");
-        assertXPath(pXmlDoc, "/root/page[1]/ftncont/ftn[2]/txt[3]/Text[2]", 
"Portion", "az");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[1]/txt[1]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "quux");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[1]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "1");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "type", "PortionType::FootnoteNum");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwFieldPortion[1]",
+            "expand", "2");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "fo");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[1]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "o");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "type", "PortionType::Para");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[2]/SwParaPortion/SwLineLayout/SwParaPortion[1]",
+            "portion", "bar");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "a");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[1]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "bc");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "type", "PortionType::Para");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[2]/SwParaPortion/"
+                    "SwLineLayout/SwParaPortion[1]",
+                    "portion", "def");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[1]",
+                    "portion", "g");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "type", "PortionType::Text");
+        assertXPath(pXmlDoc,
+                    
"/root/page[1]/ftncont/ftn[2]/txt[3]/anchored/fly[1]/txt[3]/SwParaPortion/"
+                    "SwLineLayout/SwLinePortion[2]",
+                    "portion", "hi");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[1]",
+            "portion", "b");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "type", "PortionType::Text");
+        assertXPath(
+            pXmlDoc,
+            
"/root/page[1]/ftncont/ftn[2]/txt[3]/SwParaPortion/SwLineLayout/SwLinePortion[2]",
+            "portion", "az");
     }
 }
 

Reply via email to