sw/inc/deletelistener.hxx        |   92 +++++++++++++++++++++++++++++++++++++++
 sw/source/filter/ww8/ww8par2.cxx |   66 ---------------------------
 2 files changed, 94 insertions(+), 64 deletions(-)

New commits:
commit c19c582913c678cb88d97f908bb749072e6bd340
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Sat Mar 26 21:50:49 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Sun Mar 27 13:57:05 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>

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 e500e254da40..f74d8946e84f 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,69 +168,6 @@ sal_uInt32 wwSectionManager::GetWWPageTopMargin() const
     return !maSegments.empty() ? maSegments.back().maSep.dyaTop : 0;
 }
 
-namespace
-{
-    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 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* pModify)
-            : m_pModify(pModify)
-        {
-            m_pModify->Add(this);
-        }
-
-        bool WasDeleted() const
-        {
-            return !m_pModify;
-        }
-
-        virtual ~SwDeleteListener() override
-        {
-            if (!m_pModify)
-                return;
-            m_pModify->Remove(this);
-        }
-    };
-}
-
 sal_uInt16 SwWW8ImplReader::End_Footnote()
 {
     /*
@@ -2827,7 +2765,7 @@ void WW8TabDesc::FinishSwTable()
     m_pIo->m_pLastAnchorPos.reset();
 
     SwTableNode* pTableNode = m_pTable->GetTableNode();
-    SwDeleteListener aListener(pTableNode);
+    SwDeleteListener aListener(*pTableNode);
     m_pIo->m_xRedlineStack = std::move(mxOldRedlineStack);
 
     if (xLastAnchorCursor)

Reply via email to