diff options
-rw-r--r-- | svl/source/items/poolitem.cxx | 1 | ||||
-rw-r--r-- | sw/inc/hintids.hxx | 2 | ||||
-rw-r--r-- | sw/inc/hints.hxx | 14 | ||||
-rw-r--r-- | sw/inc/node.hxx | 4 | ||||
-rw-r--r-- | sw/source/core/attr/hints.cxx | 5 | ||||
-rw-r--r-- | sw/source/core/docnode/node.cxx | 23 | ||||
-rw-r--r-- | sw/source/filter/xml/xmlfmt.cxx | 7 | ||||
-rw-r--r-- | sw/source/uibase/app/docstyle.cxx | 4 |
8 files changed, 26 insertions, 34 deletions
diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index 0d6513f70483..ed888a09c8de 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -443,7 +443,6 @@ // class SwTableFormulaUpdate : public SwMsgPoolItem // class SwAutoFormatGetDocNode: public SwMsgPoolItem // class SwAttrSetChg: public SwMsgPoolItem -// class SwCondCollCondChg: public SwMsgPoolItem // class SwVirtPageNumInfo: public SwMsgPoolItem // class SwFindNearestNode : public SwMsgPoolItem // class SwStringMsgPoolItem : public SwMsgPoolItem diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx index f8b05e9a080c..021aac0be963 100644 --- a/sw/inc/hintids.hxx +++ b/sw/inc/hintids.hxx @@ -136,7 +136,6 @@ class SwDelText; class SwRefMarkFieldUpdate; class SwTableFormulaUpdate; class SwAutoFormatGetDocNode; -class SwCondCollCondChg; class SwVirtPageNumInfo; class SwFindNearestNode; class SwStringMsgPoolItem; @@ -428,7 +427,6 @@ constexpr TypedWhichId<SwMsgPoolItem> RES_SECTION_NOT_HIDDEN (173); constexpr TypedWhichId<SwMsgPoolItem> RES_GRAPHIC_ARRIVED (174); constexpr TypedWhichId<SwMsgPoolItem> RES_GRAPHIC_PIECE_ARRIVED (175); constexpr TypedWhichId<SwMsgPoolItem> RES_HIDDENPARA_PRINT (176); -constexpr TypedWhichId<SwCondCollCondChg> RES_CONDCOLL_CONDCHG (177); constexpr TypedWhichId<SwVirtPageNumInfo> RES_VIRTPAGENUM_INFO (178); constexpr TypedWhichId<SwPtrMsgPoolItem> RES_REMOVE_UNO_OBJECT (179); constexpr TypedWhichId<SwMsgPoolItem> RES_GRF_REREAD_AND_INCACHE (180); diff --git a/sw/inc/hints.hxx b/sw/inc/hints.hxx index 9a79579c16ef..6b3073e6a739 100644 --- a/sw/inc/hints.hxx +++ b/sw/inc/hints.hxx @@ -32,6 +32,7 @@ class SwPageFrame; class SwFrame; class SwHistory; class SwTextNode; +class SwTextFormatColl; // Base class for all Message-Hints: // "Overhead" of SfxPoolItem is handled here @@ -128,6 +129,12 @@ public: RedlineUnDelText(sal_Int32 nS, sal_Int32 nL); }; +class CondCollCondChg final : public SfxHint +{ +public: + const SwTextFormatColl& m_rColl; + CondCollCondChg(const SwTextFormatColl& rColl) : m_rColl(rColl) {}; +}; } class SwUpdateAttr final : public SwMsgPoolItem @@ -251,13 +258,6 @@ public: #endif }; -class SwCondCollCondChg final : public SwMsgPoolItem -{ -public: - SwFormat *pChangedFormat; - SwCondCollCondChg( SwFormat *pFormat ); -}; - class SwVirtPageNumInfo final : public SwMsgPoolItem { const SwPageFrame *m_pPage; diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx index 7aa3fe8525bb..c69347fde410 100644 --- a/sw/inc/node.hxx +++ b/sw/inc/node.hxx @@ -454,14 +454,12 @@ public: virtual SwFormatColl* ChgFormatColl( SwFormatColl* ); SwFormatColl* GetFormatColl() const { return const_cast<SwFormatColl*>(static_cast<const SwFormatColl*>(GetRegisteredIn())); } -//FEATURE::CONDCOLL inline SwFormatColl& GetAnyFormatColl() const; void SetCondFormatColl( SwFormatColl* ); inline SwFormatColl* GetCondFormatColl() const; bool IsAnyCondition( SwCollCondition& rTmp ) const; - void ChkCondColl(); -//FEATURE::CONDCOLL + void ChkCondColl(const SwTextFormatColl* pColl = nullptr); /** Invalidates NumRule at the node. NumRule is updated on EndAction of a Shell at the latest. */ diff --git a/sw/source/core/attr/hints.cxx b/sw/source/core/attr/hints.cxx index b8d626e1b45f..56288c840bbe 100644 --- a/sw/source/core/attr/hints.cxx +++ b/sw/source/core/attr/hints.cxx @@ -165,11 +165,6 @@ const SfxPoolItem* GetDfltAttr( sal_uInt16 nWhich ) } #endif -SwCondCollCondChg::SwCondCollCondChg( SwFormat *pFormat ) - : SwMsgPoolItem( RES_CONDCOLL_CONDCHG ), pChangedFormat( pFormat ) -{ -} - SwVirtPageNumInfo::SwVirtPageNumInfo( const SwPageFrame *pPg ) : SwMsgPoolItem( RES_VIRTPAGENUM_INFO ), m_pPage( nullptr ), m_pOrigPage( pPg ), m_pFrame( nullptr ) { diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index c13ffe5620ed..076fd4c545bd 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -1150,13 +1150,6 @@ void SwContentNode::SwClientNotify( const SwModify&, const SfxHint& rHint) } break; - case RES_CONDCOLL_CONDCHG: - if(pLegacyHint->m_pNew - && static_cast<const SwCondCollCondChg*>(pLegacyHint->m_pNew)->pChangedFormat == GetRegisteredIn() - && &GetNodes() == &GetDoc().GetNodes() ) - ChkCondColl(); - return; // Do not pass through to the base class/Frames - case RES_ATTRSET_CHG: if (GetNodes().IsDocNodes() && IsTextNode() @@ -1195,6 +1188,10 @@ void SwContentNode::SwClientNotify( const SwModify&, const SfxHint& rHint) { m_pCondColl = const_cast<SwFormatColl*>(static_cast<const SwFormatColl*>(pModifyChangedHint->m_pNew)); } + else if(auto pCondCollCondChgHint = dynamic_cast<const sw::CondCollCondChg*>(&rHint)) + { + ChkCondColl(&pCondCollCondChgHint->m_rColl); + } } bool SwContentNode::InvalidateNumRule() @@ -2006,8 +2003,18 @@ bool SwContentNode::IsAnyCondition( SwCollCondition& rTmp ) const return false; } -void SwContentNode::ChkCondColl() +void SwContentNode::ChkCondColl(const SwTextFormatColl* pColl) { + if(pColl != GetRegisteredIn()) + { + SAL_WARN("sw.core", "Wrong cond collection, skipping check of Cond Colls."); + return; + } + if(&GetNodes() != &GetDoc().GetNodes()) + { + SAL_WARN("sw.core", "Nodes amiss, skipping check of Cond Colls."); + return; + } // Check, just to be sure if( RES_CONDTXTFMTCOLL != GetFormatColl()->Which() ) return; diff --git a/sw/source/filter/xml/xmlfmt.cxx b/sw/source/filter/xml/xmlfmt.cxx index 80d808aeeaec..789d6ed410f9 100644 --- a/sw/source/filter/xml/xmlfmt.cxx +++ b/sw/source/filter/xml/xmlfmt.cxx @@ -1044,11 +1044,8 @@ void SwXMLImport::UpdateTextCollConditions( SwDoc *pDoc ) default: break; } } - if( bSendModify ) - { - SwCondCollCondChg aMsg( pColl ); - pColl->ModifyNotification( &aMsg, &aMsg ); - } + if(bSendModify) + pColl->GetNotifier().Broadcast(sw::CondCollCondChg(*pColl)); } } } diff --git a/sw/source/uibase/app/docstyle.cxx b/sw/source/uibase/app/docstyle.cxx index 9f594d1ceada..6c10b11eb65a 100644 --- a/sw/source/uibase/app/docstyle.cxx +++ b/sw/source/uibase/app/docstyle.cxx @@ -1504,9 +1504,7 @@ void SwDocStyleSheet::SetItemSet( const SfxItemSet& rSet, } } - // Update document to new conditions - SwCondCollCondChg aMsg( pColl ); - pColl->ModifyNotification( &aMsg, &aMsg ); + pColl->GetNotifier().Broadcast(sw::CondCollCondChg(*pColl)); } else if( pCondItem && !pColl->HasWriterListeners() ) { |