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 );