include/svl/hint.hxx               |    1 
 sw/inc/hintids.hxx                 |    2 -
 sw/inc/hints.hxx                   |    6 ++++
 sw/source/core/docnode/section.cxx |   47 ++++++++++++++++---------------------
 4 files changed, 28 insertions(+), 28 deletions(-)

New commits:
commit b89a5eef6daa23c27265f7451ec617dfedd2ce67
Author:     Bjoern Michaelsen <bjoern.michael...@libreoffice.org>
AuthorDate: Sun Sep 25 13:15:03 2022 +0200
Commit:     Bjoern Michaelsen <bjoern.michael...@libreoffice.org>
CommitDate: Mon Sep 26 09:30:22 2022 +0200

    introduce sw::SectionHidden as plain SfxHint
    
    Change-Id: I7412c16d0ffd4cf38a1b4186f81703443cdf6fbe
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140576
    Tested-by: Jenkins
    Reviewed-by: Bjoern Michaelsen <bjoern.michael...@libreoffice.org>

diff --git a/include/svl/hint.hxx b/include/svl/hint.hxx
index 22f0bb8eb7e2..e0807ca89cae 100644
--- a/include/svl/hint.hxx
+++ b/include/svl/hint.hxx
@@ -143,6 +143,7 @@ enum class SfxHintId {
     SwInsertText,
     SwDeleteText,
     SwDeleteChar,
+    SwSectionHidden,
 
     ThisIsAnSdrHint
 };
diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx
index 497635f71f5b..22dba273ec1b 100644
--- a/sw/inc/hintids.hxx
+++ b/sw/inc/hintids.hxx
@@ -428,8 +428,6 @@ constexpr TypedWhichId<SwTableFormulaUpdate> 
RES_TABLEFML_UPDATE(170);
 constexpr TypedWhichId<SwMsgPoolItem> RES_UPDATEDDETBL(171);
 constexpr TypedWhichId<SwMsgPoolItem> RES_TBLHEADLINECHG(172);
 constexpr TypedWhichId<SwAutoFormatGetDocNode> RES_AUTOFMT_DOCNODE(173);
-constexpr TypedWhichId<SwMsgPoolItem> RES_SECTION_HIDDEN(174);
-constexpr TypedWhichId<SwMsgPoolItem> RES_SECTION_NOT_HIDDEN(175);
 constexpr TypedWhichId<SwMsgPoolItem> RES_GRAPHIC_PIECE_ARRIVED(177);
 constexpr TypedWhichId<SwMsgPoolItem> RES_HIDDENPARA_PRINT(178);
 constexpr TypedWhichId<SwVirtPageNumInfo> RES_VIRTPAGENUM_INFO(180);
diff --git a/sw/inc/hints.hxx b/sw/inc/hints.hxx
index 777825ae4969..1148af5c1598 100644
--- a/sw/inc/hints.hxx
+++ b/sw/inc/hints.hxx
@@ -200,6 +200,12 @@ public:
     const OUString m_sNew;
     NameChanged(const OUString& rOld, const OUString& rNew) : 
SfxHint(SfxHintId::NameChanged), m_sOld(rOld), m_sNew(rNew) {};
 };
+class SectionHidden final: public SfxHint
+{
+public:
+    const bool m_isHidden;
+    SectionHidden(const bool isHidden = true) : 
SfxHint(SfxHintId::SwSectionHidden), m_isHidden(isHidden) {};
+};
 }
 
 class SwUpdateAttr final : public SwMsgPoolItem
diff --git a/sw/source/core/docnode/section.cxx 
b/sw/source/core/docnode/section.cxx
index a2f7d37ef581..975f72a9d607 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -289,8 +289,8 @@ void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, 
bool const bCondition)
             // This should be shown by the bHiddenFlag.
 
             // Tell all Children that they are hidden
-            const SwMsgPoolItem aMsgItem( RES_SECTION_HIDDEN );
-            pFormat->CallSwClientNotify(sw::LegacyModifyHint(&aMsgItem, 
&aMsgItem));
+            const sw::SectionHidden aHint;
+            pFormat->CallSwClientNotify(aHint);
 
             // Delete all Frames
             pFormat->DelFrames();
@@ -304,8 +304,8 @@ void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, 
bool const bCondition)
         if( !pParentSect || !pParentSect->IsHiddenFlag() )
         {
             // Tell all Children that the Parent is not hidden anymore
-            const SwMsgPoolItem aMsgItem( RES_SECTION_NOT_HIDDEN );
-            pFormat->CallSwClientNotify(sw::LegacyModifyHint(&aMsgItem, 
&aMsgItem));
+            const sw::SectionHidden aHint(false);
+            pFormat->CallSwClientNotify(aHint);
 
             pFormat->MakeFrames();
         }
@@ -393,7 +393,12 @@ void SwSection::SwClientNotify(const SwModify&, const 
SfxHint& rHint)
 
 void SwSection::Notify(SfxHint const& rHint)
 {
-    if (rHint.GetId() != SfxHintId::SwLegacyModify)
+    if (rHint.GetId() == SfxHintId::SwSectionHidden)
+    {
+        auto rSectionHidden = static_cast<const sw::SectionHidden&>(rHint);
+        m_Data.SetHiddenFlag(rSectionHidden.m_isHidden || (m_Data.IsHidden() 
&& m_Data.IsCondHidden()));
+        return;
+    } else if (rHint.GetId() != SfxHintId::SwLegacyModify)
         return;
     auto pLegacy = static_cast<const sw::LegacyModifyHint*>(&rHint);
     auto pOld = pLegacy->m_pOld;
@@ -457,14 +462,6 @@ void SwSection::Notify(SfxHint const& rHint)
         }
         return;
 
-    case RES_SECTION_HIDDEN:
-        m_Data.SetHiddenFlag(true);
-        return;
-
-    case RES_SECTION_NOT_HIDDEN:
-        m_Data.SetHiddenFlag( m_Data.IsHidden() && m_Data.IsCondHidden() );
-        return;
-
     case RES_COL:
         // Is handled by the Layout, if appropriate
         break;
@@ -700,7 +697,15 @@ void SwSectionFormat::MakeFrames()
 
 void SwSectionFormat::SwClientNotify(const SwModify& rMod, const SfxHint& 
rHint)
 {
-    if (rHint.GetId() != SfxHintId::SwLegacyModify)
+    if (rHint.GetId() == SfxHintId::SwSectionHidden)
+    {
+        auto rSectionHidden = static_cast<const sw::SectionHidden&>(rHint);
+        auto pSect = GetSection();
+        if(!pSect || rSectionHidden.m_isHidden == pSect->IsHiddenFlag()) // 
already at target state, skipping.
+            return;
+        GetNotifier().Broadcast(rSectionHidden);
+        return;
+    } else if (rHint.GetId() != SfxHintId::SwLegacyModify)
         return;
     auto pLegacy = static_cast<const sw::LegacyModifyHint*>(&rHint);
     sal_uInt16 nWhich = pLegacy->GetWhich();
@@ -750,14 +755,6 @@ void SwSectionFormat::SwClientNotify(const SwModify& rMod, 
const SfxHint& rHint)
         }
         break;
 
-    case RES_SECTION_HIDDEN:
-    case RES_SECTION_NOT_HIDDEN:
-        {
-            auto pSect = GetSection();
-            if(!pSect || (RES_SECTION_HIDDEN == nWhich) == 
pSect->IsHiddenFlag()) // already at target state, skipping.
-                return;
-        }
-        [[fallthrough]];
     case RES_FTN_AT_TXTEND:
     case RES_END_AT_TXTEND:
         GetNotifier().Broadcast(sw::LegacyModifyHint(pOld, pNew));
@@ -918,10 +915,8 @@ void SwSectionFormat::UpdateParent()
 
     if(bIsHidden == pSection->IsHiddenFlag())
     {
-        SwMsgPoolItem aMsgItem(o3tl::narrowing<sal_uInt16>(bIsHidden
-                ? RES_SECTION_HIDDEN
-                : RES_SECTION_NOT_HIDDEN));
-        CallSwClientNotify(sw::LegacyModifyHint(&aMsgItem, &aMsgItem));
+        const sw::SectionHidden aHint(bIsHidden);
+        CallSwClientNotify(aHint);
     }
 }
 

Reply via email to