sw/inc/anchoredobject.hxx       |    2 +-
 sw/source/core/inc/flyfrm.hxx   |    2 +-
 sw/source/core/layout/fly.cxx   |   27 +++++++++++++++++++++++++++
 sw/source/core/text/xmldump.cxx |    8 --------
 4 files changed, 29 insertions(+), 10 deletions(-)

New commits:
commit 5d66979a58363e0362b13c637b7eade0fc28505d
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Thu May 4 19:57:47 2023 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Fri May 5 08:48:14 2023 +0200

    sw layout xml dump: extract SwFlyFrame::dumpAsXml() from SwFrame
    
    Ideally SwFrame should not really know anything about fly frames.
    
    Change-Id: Idc10a3c8130a961b01a0abbf6f52b093937fd0dd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151401
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/inc/anchoredobject.hxx b/sw/inc/anchoredobject.hxx
index 114380d6f04d..ea8104882b4d 100644
--- a/sw/inc/anchoredobject.hxx
+++ b/sw/inc/anchoredobject.hxx
@@ -485,7 +485,7 @@ class SW_DLLPUBLIC SwAnchoredObject
         /** Dump a bunch of useful data to an XML representation to ease
             layout understanding, debugging and testing.
           */
-        virtual void dumpAsXml( xmlTextWriterPtr pWriter ) const;
+        virtual void dumpAsXml( xmlTextWriterPtr pWriter = nullptr ) const;
 
         /** The element name to show in the XML dump. */
         virtual const char* getElementName( ) const { return 
"SwAnchoredObject"; }
diff --git a/sw/source/core/inc/flyfrm.hxx b/sw/source/core/inc/flyfrm.hxx
index cc6d969401bf..d3815a82835a 100644
--- a/sw/source/core/inc/flyfrm.hxx
+++ b/sw/source/core/inc/flyfrm.hxx
@@ -289,7 +289,7 @@ public:
     virtual const SwFlyFrameFormat *GetFormat() const override;
     virtual       SwFlyFrameFormat *GetFormat() override;
 
-    virtual void dumpAsXml( xmlTextWriterPtr writer ) const override { 
SwLayoutFrame::dumpAsXml( writer ); };
+    virtual void dumpAsXml(xmlTextWriterPtr writer = nullptr) const override;
 
     virtual void Calc(vcl::RenderContext* pRenderContext) const override;
 
diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index 387095bbdeed..6d80daf74efc 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -3075,6 +3075,33 @@ SwFlyFrameFormat * SwFlyFrame::GetFormat()
     return static_cast< SwFlyFrameFormat * >( GetDep() );
 }
 
+void SwFlyFrame::dumpAsXml(xmlTextWriterPtr writer) const
+{
+    (void)xmlTextWriterStartElement(writer, reinterpret_cast<const 
xmlChar*>("fly"));
+    dumpAsXmlAttributes(writer);
+
+    (void)xmlTextWriterStartElement(writer, BAD_CAST("infos"));
+    dumpInfosAsXml(writer);
+    (void)xmlTextWriterEndElement(writer);
+    const SwSortedObjs* pAnchored = GetDrawObjs();
+    if (pAnchored && pAnchored->size() > 0)
+    {
+        (void)xmlTextWriterStartElement(writer, BAD_CAST("anchored"));
+
+        for (SwAnchoredObject* pObject : *pAnchored)
+        {
+            pObject->dumpAsXml(writer);
+        }
+
+        (void)xmlTextWriterEndElement(writer);
+    }
+    dumpChildrenAsXml(writer);
+
+    SwAnchoredObject::dumpAsXml(writer);
+
+    (void)xmlTextWriterEndElement(writer);
+}
+
 void SwFlyFrame::Calc(vcl::RenderContext* pRenderContext) const
 {
     if ( !m_bValidContentPos )
diff --git a/sw/source/core/text/xmldump.cxx b/sw/source/core/text/xmldump.cxx
index 39231f410e56..4c66104c12af 100644
--- a/sw/source/core/text/xmldump.cxx
+++ b/sw/source/core/text/xmldump.cxx
@@ -174,9 +174,6 @@ void SwFrame::dumpAsXml( xmlTextWriterPtr writer ) const
 
     switch ( GetType(  ) )
     {
-    case SwFrameType::Fly:
-        name = "fly";
-        break;
     case SwFrameType::Section:
         name = "section";
         break;
@@ -298,11 +295,6 @@ void SwFrame::dumpAsXml( xmlTextWriterPtr writer ) const
         else
         {
             dumpChildrenAsXml( writer );
-            if (IsFlyFrame())
-            {
-                auto pFlyFrame = static_cast<const SwFlyFrame*>(this);
-                pFlyFrame->SwAnchoredObject::dumpAsXml(writer);
-            }
         }
         (void)xmlTextWriterEndElement( writer );
     }

Reply via email to