[Libreoffice-commits] core.git: sw/inc sw/source
Bjoern Michaelsen (via logerrit)
logerrit at kemper.freedesktop.org
Sat Oct 31 11:38:16 UTC 2020
sw/inc/ndtxt.hxx | 3 -
sw/source/core/txtnode/atrfld.cxx | 12 +---
sw/source/core/txtnode/ndtxt.cxx | 103 +++++++++++++++++++-------------------
3 files changed, 59 insertions(+), 59 deletions(-)
New commits:
commit 50e08fe9b0f78badc55fce2ac392de9724ff8906
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
AuthorDate: Fri Oct 30 19:21:00 2020 +0100
Commit: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
CommitDate: Sat Oct 31 12:37:41 2020 +0100
atrfld: ModifyNotification no more ...
Change-Id: I9a5dc35a71725969bc4b75f0444ba663271e3228
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105079
Tested-by: Jenkins
Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index 539db67906cf..7b37dc152687 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -202,11 +202,12 @@ public:
/// End: Data collected during idle time
protected:
- /// for hanging TextFormatCollections somewhere else (Outline-Numbering!)
virtual void SwClientNotify( const SwModify&, const SfxHint& ) override;
public:
using SwContentNode::GetAttr;
+ /// for hanging TextFormatCollections somewhere else (Outline-Numbering!)
+ void TriggerNodeUpdate(const sw::LegacyModifyHint&);
const OUString& GetText() const { return m_Text; }
diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx
index a2008e7c4393..da3ef375c304 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -373,9 +373,7 @@ void SwFormatField::UpdateTextNode(const SfxPoolItem* pOld, const SfxPoolItem* p
}
}
if(bTriggerNode)
- {
- pTextNd->ModifyNotification(pNodeOld, pNodeNew);
- }
+ pTextNd->TriggerNodeUpdate(sw::LegacyModifyHint(pNodeOld, pNodeNew));
if(bExpand)
{
mpTextField->ExpandTextField( pOld == nullptr && pNew == nullptr );
@@ -476,9 +474,7 @@ void SwTextField::ExpandTextField(const bool bForceNotify) const
if ( bSameExpandSimpleNotification )
{
if( bHiddenParaChanged )
- {
- m_pTextNode->ModifyNotification( nullptr, nullptr );
- }
+ m_pTextNode->TriggerNodeUpdate(sw::LegacyModifyHint(nullptr, nullptr));
if ( !bForceNotify )
{
// done, if no further notification forced.
@@ -559,9 +555,7 @@ void SwTextField::NotifyContentChange(SwFormatField& rFormatField)
{
//if not in undo section notify the change
if (m_pTextNode && m_pTextNode->GetNodes().IsDocNodes())
- {
- m_pTextNode->ModifyNotification(nullptr, &rFormatField);
- }
+ m_pTextNode->TriggerNodeUpdate(sw::LegacyModifyHint(nullptr, &rFormatField));
}
/*static*/
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index b2141ba2a7b9..f3e93f934c10 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -5238,71 +5238,76 @@ bool SwTextNode::IsInContent() const
return !GetDoc().IsInHeaderFooter( SwNodeIndex(*this) );
}
-void SwTextNode::SwClientNotify( const SwModify& rModify, const SfxHint& rHint )
+void SwTextNode::TriggerNodeUpdate(const sw::LegacyModifyHint& rHint)
{
- if (auto pLegacyHint = dynamic_cast<const sw::LegacyModifyHint*>(&rHint))
+ const auto pOldValue = rHint.m_pOld;
+ const auto pNewValue = rHint.m_pNew;
+ bool bWasNotifiable = m_bNotifiable;
+ m_bNotifiable = false;
+
+ // Override Modify so that deleting styles works properly (outline
+ // numbering!).
+ // Never call ChgTextCollUpdateNum for Nodes in Undo.
+ if( pOldValue
+ && pNewValue
+ && RES_FMT_CHG == pOldValue->Which()
+ && GetRegisteredIn() == static_cast<const SwFormatChg*>(pNewValue)->pChangedFormat
+ && GetNodes().IsDocNodes() )
{
- bool bWasNotifiable = m_bNotifiable;
- m_bNotifiable = false;
+ ChgTextCollUpdateNum(
+ static_cast<const SwTextFormatColl*>(static_cast<const SwFormatChg*>(pOldValue)->pChangedFormat),
+ static_cast<const SwTextFormatColl*>(static_cast<const SwFormatChg*>(pNewValue)->pChangedFormat) );
+ }
- const auto pOldValue = pLegacyHint->m_pOld;
- const auto pNewValue = pLegacyHint->m_pNew;
- // Override Modify so that deleting styles works properly (outline
- // numbering!).
- // Never call ChgTextCollUpdateNum for Nodes in Undo.
- if( pOldValue
- && pNewValue
- && RES_FMT_CHG == pOldValue->Which()
- && GetRegisteredIn() == static_cast<const SwFormatChg*>(pNewValue)->pChangedFormat
- && GetNodes().IsDocNodes() )
- {
- ChgTextCollUpdateNum(
- static_cast<const SwTextFormatColl*>(static_cast<const SwFormatChg*>(pOldValue)->pChangedFormat),
- static_cast<const SwTextFormatColl*>(static_cast<const SwFormatChg*>(pNewValue)->pChangedFormat) );
- }
+ // reset fill information
+ if (maFillAttributes && pNewValue)
+ {
+ const sal_uInt16 nWhich = pNewValue->Which();
+ bool bReset(RES_FMT_CHG == nWhich); // ..on format change (e.g. style changed)
- // reset fill information
- if (maFillAttributes && pNewValue)
+ if(!bReset && RES_ATTRSET_CHG == nWhich) // ..on ItemChange from DrawingLayer FillAttributes
{
- const sal_uInt16 nWhich = pNewValue->Which();
- bool bReset(RES_FMT_CHG == nWhich); // ..on format change (e.g. style changed)
-
- if(!bReset && RES_ATTRSET_CHG == nWhich) // ..on ItemChange from DrawingLayer FillAttributes
- {
- SfxItemIter aIter(*static_cast<const SwAttrSetChg*>(pNewValue)->GetChgSet());
-
- for(const SfxPoolItem* pItem = aIter.GetCurItem(); pItem && !bReset; pItem = aIter.NextItem())
- {
- bReset = !IsInvalidItem(pItem) && pItem->Which() >= XATTR_FILL_FIRST && pItem->Which() <= XATTR_FILL_LAST;
- }
- }
+ SfxItemIter aIter(*static_cast<const SwAttrSetChg*>(pNewValue)->GetChgSet());
- if(bReset)
+ for(const SfxPoolItem* pItem = aIter.GetCurItem(); pItem && !bReset; pItem = aIter.NextItem())
{
- maFillAttributes.reset();
+ bReset = !IsInvalidItem(pItem) && pItem->Which() >= XATTR_FILL_FIRST && pItem->Which() <= XATTR_FILL_LAST;
}
}
- if ( !mbInSetOrResetAttr )
+ if(bReset)
{
- HandleModifyAtTextNode( *this, pOldValue, pNewValue );
+ maFillAttributes.reset();
}
+ }
- SwContentNode::SwClientNotify(rModify, rHint);
+ if ( !mbInSetOrResetAttr )
+ {
+ HandleModifyAtTextNode( *this, pOldValue, pNewValue );
+ }
- SwDoc& rDoc = GetDoc();
- // #125329# - assure that text node is in document nodes array
- if ( !rDoc.IsInDtor() && &rDoc.GetNodes() == &GetNodes() )
- {
- rDoc.GetNodes().UpdateOutlineNode(*this);
- }
+ SwContentNode::SwClientNotify(*this, rHint);
- m_bNotifiable = bWasNotifiable;
+ SwDoc& rDoc = GetDoc();
+ // #125329# - assure that text node is in document nodes array
+ if ( !rDoc.IsInDtor() && &rDoc.GetNodes() == &GetNodes() )
+ {
+ rDoc.GetNodes().UpdateOutlineNode(*this);
+ }
- if (pOldValue && (RES_REMOVE_UNO_OBJECT == pOldValue->Which()))
- { // invalidate cached uno object
- SetXParagraph(css::uno::Reference<css::text::XTextContent>(nullptr));
- }
+ m_bNotifiable = bWasNotifiable;
+
+ if (pOldValue && (RES_REMOVE_UNO_OBJECT == pOldValue->Which()))
+ { // invalidate cached uno object
+ SetXParagraph(css::uno::Reference<css::text::XTextContent>(nullptr));
+ }
+}
+
+void SwTextNode::SwClientNotify( const SwModify& rModify, const SfxHint& rHint )
+{
+ if (auto pLegacyHint = dynamic_cast<const sw::LegacyModifyHint*>(&rHint))
+ {
+ TriggerNodeUpdate(*pLegacyHint);
}
else if (dynamic_cast<const SwAttrHint*>(&rHint))
{
More information about the Libreoffice-commits
mailing list