sw/inc/deletelistener.hxx        |   92 +++++++++++++++++++++++++++++++++++++++
 sw/source/filter/ww8/ww8par2.cxx |   71 +-----------------------------
 2 files changed, 95 insertions(+), 68 deletions(-)

New commits:
commit 26872d9b408660056fedfa18ba2be25a14b771c1
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Sat Mar 26 21:50:49 2022 +0000
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Mar 29 11:30:20 2022 +0200

    move DeleteListener contraptions to toplevel writer includes
    
    Change-Id: Ifa1e75b62da4174f27fca52eb86559cd6a381513
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132141
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132147
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/sw/inc/deletelistener.hxx b/sw/inc/deletelistener.hxx
new file mode 100644
index 000000000000..2b212e418fef
--- /dev/null
+++ b/sw/inc/deletelistener.hxx
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include <svl/listener.hxx>
+#include <svl/lstner.hxx>
+#include "calbck.hxx"
+
+class SwDeleteListener final : public SwClient
+{
+private:
+    SwModify* m_pModify;
+
+    virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) override
+    {
+        if (rHint.GetId() != SfxHintId::SwLegacyModify)
+            return;
+        auto pLegacy = static_cast<const sw::LegacyModifyHint*>(&rHint);
+        if (pLegacy->GetWhich() == RES_OBJECTDYING)
+        {
+            m_pModify->Remove(this);
+            m_pModify = nullptr;
+        }
+    }
+
+public:
+    SwDeleteListener(SwModify& rModify)
+        : m_pModify(&rModify)
+    {
+        m_pModify->Add(this);
+    }
+
+    bool WasDeleted() const { return !m_pModify; }
+
+    virtual ~SwDeleteListener() override
+    {
+        if (!m_pModify)
+            return;
+        m_pModify->Remove(this);
+    }
+};
+
+class SvtDeleteListener final : public SvtListener
+{
+private:
+    bool bObjectDeleted;
+
+public:
+    explicit SvtDeleteListener(SvtBroadcaster& rNotifier)
+        : bObjectDeleted(false)
+    {
+        StartListening(rNotifier);
+    }
+
+    virtual void Notify(const SfxHint& rHint) override
+    {
+        if (rHint.GetId() == SfxHintId::Dying)
+            bObjectDeleted = true;
+    }
+
+    bool WasDeleted() const { return bObjectDeleted; }
+};
+
+class SfxDeleteListener final : public SfxListener
+{
+private:
+    bool bObjectDeleted;
+
+public:
+    explicit SfxDeleteListener(SfxBroadcaster& rNotifier)
+        : bObjectDeleted(false)
+    {
+        StartListening(rNotifier);
+    }
+
+    virtual void Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint) override
+    {
+        if (rHint.GetId() == SfxHintId::Dying)
+            bObjectDeleted = true;
+    }
+
+    bool WasDeleted() const { return bObjectDeleted; }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index 3f3c3adfb74f..540b25018743 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -39,6 +39,7 @@
 #include <editeng/pgrditem.hxx>
 #include <msfilter.hxx>
 #include <pam.hxx>
+#include <deletelistener.hxx>
 #include <doc.hxx>
 #include <IDocumentStylePoolAccess.hxx>
 #include <docary.hxx>
@@ -167,32 +168,6 @@ sal_uInt32 wwSectionManager::GetWWPageTopMargin() const
     return !maSegments.empty() ? maSegments.back().maSep.dyaTop : 0;
 }
 
-namespace
-{
-    class DeleteListener final : public SvtListener
-    {
-    private:
-        bool bObjectDeleted;
-    public:
-        explicit DeleteListener(SvtBroadcaster& rNotifier)
-            : bObjectDeleted(false)
-        {
-            StartListening(rNotifier);
-        }
-
-        virtual void Notify(const SfxHint& rHint) override
-        {
-            if (rHint.GetId() == SfxHintId::Dying)
-                bObjectDeleted = true;
-        }
-
-        bool WasDeleted() const
-        {
-            return bObjectDeleted;
-        }
-    };
-}
-
 sal_uInt16 SwWW8ImplReader::End_Footnote()
 {
     /*
@@ -252,7 +227,7 @@ sal_uInt16 SwWW8ImplReader::End_Footnote()
 
         SwFormatFootnote& rFormatFootnote = 
static_cast<SwFormatFootnote&>(pFN->GetAttr());
 
-        DeleteListener aDeleteListener(rFormatFootnote.GetNotifier());
+        SvtDeleteListener aDeleteListener(rFormatFootnote.GetNotifier());
 
         // read content of Ft-/End-Note
         Read_HdFtFootnoteText( pSttIdx, rDesc.mnStartCp, rDesc.mnLen, 
rDesc.meType);
@@ -2783,46 +2758,6 @@ void WW8TabDesc::MoveOutsideTable()
         *m_pIo->m_pPaM->GetPoint() = *m_xTmpPos->GetPoint();
 }
 
-namespace
-{
-    class SwTableNodeListener final : public SwClient
-    {
-    private:
-        SwModify* m_pModify;
-
-        virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) 
override
-        {
-            if (rHint.GetId() != SfxHintId::SwLegacyModify)
-                return;
-            auto pLegacy = static_cast<const sw::LegacyModifyHint*>(&rHint);
-            if (pLegacy->GetWhich() == RES_OBJECTDYING)
-            {
-                m_pModify->Remove(this);
-                m_pModify = nullptr;
-            }
-        }
-
-    public:
-        SwTableNodeListener(SwModify* pModify)
-            : m_pModify(pModify)
-        {
-            m_pModify->Add(this);
-        }
-
-        bool WasDeleted() const
-        {
-            return !m_pModify;
-        }
-
-        virtual ~SwTableNodeListener() override
-        {
-            if (!m_pModify)
-                return;
-            m_pModify->Remove(this);
-        }
-    };
-}
-
 void WW8TabDesc::FinishSwTable()
 {
     m_pIo->m_xRedlineStack->closeall(*m_pIo->m_pPaM->GetPoint());
@@ -2833,7 +2768,7 @@ void WW8TabDesc::FinishSwTable()
     m_pIo->m_pLastAnchorPos.reset();
 
     SwTableNode* pTableNode = m_pTable->GetTableNode();
-    SwTableNodeListener aListener(pTableNode);
+    SwDeleteListener aListener(*pTableNode);
     m_pIo->m_xRedlineStack = std::move(mxOldRedlineStack);
 
     if (xLastAnchorCursor)

Reply via email to