summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2022-01-10 12:12:52 +0100
committerCaolán McNamara <caolanm@redhat.com>2022-01-12 15:12:30 +0100
commit3ce308300b276f62f11e0ed077775dea2e5f9340 (patch)
tree14c65d21a9d30f03fad406d6d314e20b2c731e30
parentofz#43446 Undefined-shift (diff)
downloadcore-3ce308300b276f62f11e0ed077775dea2e5f9340.tar.gz
core-3ce308300b276f62f11e0ed077775dea2e5f9340.zip
sw: stop inheriting SwSectionData::m_bProtectFlag from parent section
This is actually no longer inherited by accident since commit 2e32f4ed5af16a68c97a50806a42ffa2d10f1d7a because it replaced the SwSectionFormat::Modify()->ModifyBroadcast()->CallSwClientNotify()->CallSwClientNotify() with a call to GetNotifier()->Broadcast(), and apparently SwSection is a SwClient of SwSectionFormat but not a SvtListener. But some consider the new behaviour useful, as previously there was no way to un-protect a section inside an outer protected section at all, while in this way every section can have its own independent protection flag. (The m_bEditInReadonlyFlag is not used for this purpose, as it is only for the case when the document was loaded ReadOnly.) So make it more explicit by removing the SwSection inheritance code. A similar change was made for hidden flag in commit 91b0024965908c692bea40f47c58ea9d1bf8a596 Change-Id: I29d3c84309a84267573950775f2a1c6353623724 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128221 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit 840cc7883849a10eea11a02a743848238723a3de) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128232 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de> (cherry picked from commit 20c819bf3bfd9d203f860f1fd078903d0b3945a7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128329 Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/inc/section.hxx2
-rw-r--r--sw/source/core/docnode/section.cxx23
2 files changed, 4 insertions, 21 deletions
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 0647e0273334..ed777e9e68e2 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -73,7 +73,7 @@ private:
/// may have different value than format attribute:
/// format attr has value for this section, while flag is
/// effectively ORed with parent sections!
- bool m_bProtectFlag : 1;
+ bool m_bProtectFlag : 1; ///< protect flag is no longer inherited
// Edit in readonly sections.
bool m_bEditInReadonlyFlag : 1;
diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx
index afa8b905e99e..5fa56e2eb00f 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -201,15 +201,11 @@ SwSection::SwSection(
SwSection *const pParentSect = GetParent();
if( pParentSect )
{
- m_Data.SetProtectFlag( pParentSect->IsProtectFlag() );
// edit in readonly sections
m_Data.SetEditInReadonlyFlag( pParentSect->IsEditInReadonlyFlag() );
}
- if (!m_Data.IsProtectFlag())
- {
- m_Data.SetProtectFlag( rFormat.GetProtect().IsContentProtected() );
- }
+ m_Data.SetProtectFlag( rFormat.GetProtect().IsContentProtected() );
if (!m_Data.IsEditInReadonlyFlag()) // edit in readonly sections
{
@@ -457,21 +453,8 @@ void SwSection::SwClientNotify(const SwModify&, const SfxHint& rHint)
{
bool bNewFlag =
static_cast<const SvxProtectItem*>(pNew)->IsContentProtected();
- if( !bNewFlag )
- {
- // Switching off: See if there is protection transferred
- // by the Parents
- const SwSection* pSect = this;
- do {
- if( pSect->IsProtect() )
- {
- bNewFlag = true;
- break;
- }
- pSect = pSect->GetParent();
- } while (pSect);
- }
-
+ // this used to inherit the flag from the parent, but then there is
+ // no way to turn it off in an inner section
m_Data.SetProtectFlag( bNewFlag );
}
return;