sw/inc/fmtcol.hxx                 |   10 ++++++----
 sw/source/core/doc/fmtcol.cxx     |   18 +++++++++---------
 sw/source/uibase/app/docstyle.cxx |    2 +-
 3 files changed, 16 insertions(+), 14 deletions(-)

New commits:
commit 4b09854515dd2a8de2de3700c5295ac8a188dd35
Author:     Bjoern Michaelsen <bjoern.michael...@libreoffice.org>
AuthorDate: Wed Feb 19 22:51:31 2025 +0100
Commit:     Bjoern Michaelsen <bjoern.michael...@libreoffice.org>
CommitDate: Thu Feb 20 18:44:17 2025 +0100

    SwCollCondition: SwClient no more
    
    Change-Id: I5cf43f4aec61d8e7b2adf84becfda9d61629ea60
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181924
    Reviewed-by: Bjoern Michaelsen <bjoern.michael...@libreoffice.org>
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sw/inc/fmtcol.hxx b/sw/inc/fmtcol.hxx
index db39befc3d68..5c61255ee695 100644
--- a/sw/inc/fmtcol.hxx
+++ b/sw/inc/fmtcol.hxx
@@ -23,6 +23,7 @@
 #include "format.hxx"
 #include "hintids.hxx"
 #include "paratr.hxx"
+#include "deletelistener.hxx"
 #include <rtl/ustring.hxx>
 #include <tools/solar.h>
 
@@ -178,16 +179,17 @@ enum class Master_CollCondition
     PARA_IN_ENDNOTE
 };
 
-class SW_DLLPUBLIC SwCollCondition final : public SwClient
+class SW_DLLPUBLIC SwCollCondition final
 {
     Master_CollCondition m_nCondition;
     sal_uInt32 m_nSubCondition;
+    sw::WeakBroadcastingPtr<SwTextFormatColl> m_pCollection;
 
 public:
 
     SwCollCondition( SwTextFormatColl* pColl, Master_CollCondition nMasterCond,
                     sal_uInt32 nSubCond );
-    virtual ~SwCollCondition() override;
+    ~SwCollCondition();
 
     /// @@@ public copy ctor, but no copy assignment?
     SwCollCondition( const SwCollCondition& rCpy );
@@ -202,8 +204,8 @@ public:
     sal_uInt32 GetSubCondition() const   { return m_nSubCondition; }
 
     void SetCondition( Master_CollCondition nCond, sal_uInt32 nSubCond );
-    SwTextFormatColl* GetTextFormatColl() const     { return 
const_cast<SwTextFormatColl*>(static_cast<const 
SwTextFormatColl*>(GetRegisteredIn())); }
-    void RegisterToFormat( SwFormat& );
+    SwTextFormatColl* GetTextFormatColl() const { return 
const_cast<SwTextFormatColl*>(m_pCollection.operator->()); }
+    void RegisterToFormat( SwTextFormatColl& );
 };
 
 using SwFormatCollConditions = std::vector<std::unique_ptr<SwCollCondition>>;
diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx
index c8f64ffffeec..802114a18a1f 100644
--- a/sw/source/core/doc/fmtcol.cxx
+++ b/sw/source/core/doc/fmtcol.cxx
@@ -577,17 +577,17 @@ void SwTextFormatColls::dumpAsXml(xmlTextWriterPtr 
pWriter) const
 
 //FEATURE::CONDCOLL
 
-SwCollCondition::SwCollCondition( SwTextFormatColl* pColl, 
Master_CollCondition nMasterCond,
-                                sal_uInt32 nSubCond )
-    : SwClient( pColl ), m_nCondition( nMasterCond ),
-      m_nSubCondition( nSubCond )
+SwCollCondition::SwCollCondition( SwTextFormatColl* pColl, 
Master_CollCondition nMasterCond, sal_uInt32 nSubCond )
+    : m_nCondition(nMasterCond)
+    , m_nSubCondition(nSubCond)
+    , m_pCollection(pColl)
 {
 }
 
 SwCollCondition::SwCollCondition( const SwCollCondition& rCopy )
-    : SwClient( const_cast<sw::BroadcastingModify*>(static_cast<const 
sw::BroadcastingModify*>(rCopy.GetRegisteredIn())) ),
-      m_nCondition( rCopy.m_nCondition ),
-      m_nSubCondition( rCopy.m_nSubCondition )
+    : m_nCondition(rCopy.m_nCondition)
+    , m_nSubCondition(rCopy.m_nSubCondition)
+    , m_pCollection(rCopy.m_pCollection)
 {
 }
 
@@ -595,9 +595,9 @@ SwCollCondition::~SwCollCondition()
 {
 }
 
-void SwCollCondition::RegisterToFormat( SwFormat& rFormat )
+void SwCollCondition::RegisterToFormat(SwTextFormatColl& rColl)
 {
-    rFormat.Add(*this);
+    m_pCollection = &rColl;
 }
 
 bool SwCollCondition::operator==( const SwCollCondition& rCmp ) const
diff --git a/sw/source/uibase/app/docstyle.cxx 
b/sw/source/uibase/app/docstyle.cxx
index 59b2d111b0db..e29206ca1e00 100644
--- a/sw/source/uibase/app/docstyle.cxx
+++ b/sw/source/uibase/app/docstyle.cxx
@@ -1674,7 +1674,7 @@ void SwDocStyleSheet::SetItemSet( const SfxItemSet& rSet, 
const bool bBroadcast,
                     const OUString sStyle = pCondItem->GetStyle( i );
                     if (sStyle.isEmpty())
                         continue;
-                    SwFormat *const pFindFormat = lcl_FindParaFormat( m_rDoc, 
sStyle );
+                    SwTextFormatColl* const pFindFormat = lcl_FindParaFormat( 
m_rDoc, sStyle );
                     if (pFindFormat)
                     {
                         aCond.RegisterToFormat( *pFindFormat );

Reply via email to