summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@libreoffice.org>2020-11-02 21:28:18 +0100
committerBjoern Michaelsen <bjoern.michaelsen@libreoffice.org>2020-11-05 07:59:54 +0100
commit0d93ed1ea5593d62e835c958ea50c7c9df2d2f33 (patch)
treef5750d505f1887b1039afa6424a4e5a6c7224abd /sw
parent4388ce8614ee720244697e44c1f056b597273913 (diff)
Ensure no class directly derives from SwModify
- make all classes that used to be SwModify to be sw::BroadcastingModify's - this makes sure they are all sw::BroadcastMixin too, so all clients of SwModify can be migrated over to use sw::BroadcastMixin (only) instead Change-Id: Idd217b98f9c20f01e0788bc65af796050dbb5699 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105207 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/crsrsh.hxx2
-rw-r--r--sw/inc/fldbas.hxx2
-rw-r--r--sw/inc/fmtftn.hxx3
-rw-r--r--sw/inc/fmtmeta.hxx3
-rw-r--r--sw/inc/fmtrfmrk.hxx3
-rw-r--r--sw/inc/pagedesc.hxx3
-rw-r--r--sw/source/core/attr/calbck.cxx17
-rw-r--r--sw/source/core/crsr/crsrsh.cxx4
-rw-r--r--sw/source/core/fields/fldbas.cxx2
-rw-r--r--sw/source/core/layout/pagedesc.cxx5
-rw-r--r--sw/source/core/txtnode/atrftn.cxx2
-rw-r--r--sw/source/core/txtnode/atrref.cxx5
-rw-r--r--sw/source/core/txtnode/fmtatr2.cxx2
13 files changed, 31 insertions, 22 deletions
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index e4d47805a1bf..7eb1a2d0273b 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -135,7 +135,7 @@ bool GetRanges(std::vector<std::shared_ptr<SwUnoCursor>> & rRanges,
class SW_DLLPUBLIC SwCursorShell
: public SwViewShell
- , public SwModify
+ , public sw::BroadcastingModify
, public ::sw::IShellCursorSupplier
{
friend class SwCallLink;
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx
index 82461033fe1b..847e9d2ef356 100644
--- a/sw/inc/fldbas.hxx
+++ b/sw/inc/fldbas.hxx
@@ -237,7 +237,7 @@ OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat, LanguageType nLang =
For each class there is one instance of the associated type class.
Base class of all field types is SwFieldType. */
-class SW_DLLPUBLIC SwFieldType : public SwModify, public sw::BroadcasterMixin
+class SW_DLLPUBLIC SwFieldType : public sw::BroadcastingModify
{
css::uno::WeakReference<css::beans::XPropertySet> m_wXFieldMaster;
diff --git a/sw/inc/fmtftn.hxx b/sw/inc/fmtftn.hxx
index 150b3bd7e44e..2ce85ff0728b 100644
--- a/sw/inc/fmtftn.hxx
+++ b/sw/inc/fmtftn.hxx
@@ -39,8 +39,7 @@ class SwRootFrame;
class SW_DLLPUBLIC SwFormatFootnote final
: public SfxPoolItem
- , public SwModify
- , public sw::BroadcasterMixin
+ , public sw::BroadcastingModify
{
friend class SwTextFootnote;
SwTextFootnote* m_pTextAttr; ///< My TextAttribute.
diff --git a/sw/inc/fmtmeta.hxx b/sw/inc/fmtmeta.hxx
index 3bb8f928f0ee..b495e2655b98 100644
--- a/sw/inc/fmtmeta.hxx
+++ b/sw/inc/fmtmeta.hxx
@@ -126,8 +126,7 @@ namespace sw {
class Meta
: public ::sfx2::Metadatable
- , public SwModify
- , public sw::BroadcasterMixin
+ , public sw::BroadcastingModify
{
friend class ::SwFormatMeta; ///< SetFormatMeta, NotifyChangeTextNode
friend class ::SwXMeta; ///< GetTextNode, GetTextAttr, Get/SetXMeta
diff --git a/sw/inc/fmtrfmrk.hxx b/sw/inc/fmtrfmrk.hxx
index 971bd8879294..0d037a669db6 100644
--- a/sw/inc/fmtrfmrk.hxx
+++ b/sw/inc/fmtrfmrk.hxx
@@ -35,8 +35,7 @@ class SwTextRefMark;
class SAL_DLLPUBLIC_RTTI SwFormatRefMark final
: public SfxPoolItem
- , public SwModify
- , public sw::BroadcasterMixin
+ , public sw::BroadcastingModify
{
friend class SwTextRefMark;
SwTextRefMark* m_pTextAttr;
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index c5044e19a74e..44bb7ee33b52 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -136,8 +136,7 @@ namespace o3tl {
}
class SW_DLLPUBLIC SwPageDesc
- : public SwModify
- , public sw::BroadcasterMixin
+ : public sw::BroadcastingModify
{
friend class SwDoc;
friend class SwPageDescs;
diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx
index 63e5496e821f..b799f21bbb11 100644
--- a/sw/source/core/attr/calbck.cxx
+++ b/sw/source/core/attr/calbck.cxx
@@ -25,6 +25,9 @@
#include <tools/debug.hxx>
#include <sal/log.hxx>
#include <algorithm>
+#ifdef DBG_UTIL
+#include <sal/backtrace.hxx>
+#endif
namespace sw
{
@@ -196,8 +199,20 @@ bool SwModify::GetInfo( SfxPoolItem& rInfo ) const
void SwModify::Add( SwClient* pDepend )
{
DBG_TESTSOLARMUTEX();
+#ifdef DBG_UTIL
+ // You should not EVER use SwModify directly in new code:
+ // - Preexisting SwModifys should only ever be used via sw::BroadcastingModify.
+ // This includes sw::BroadcastMixin, which is the long-term target (without
+ // SwModify).
+ // - New classes should use sw::BroadcastMixin alone.
+ if(!dynamic_cast<sw::BroadcastingModify*>(this))
+ {
+ auto pBT = sal::backtrace_get(20);
+ SAL_WARN("sw.core", "Modify that is not broadcasting used!\n" << sal::backtrace_to_string(pBT.get()));
+ }
+#endif
- if(pDepend->m_pRegisteredIn == this )
+ if(pDepend->m_pRegisteredIn == this)
return;
#if OSL_DEBUG_LEVEL > 0
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 80cc4f69da90..2ba78302aa28 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -2912,7 +2912,7 @@ void SwCursorShell::ParkCursor( const SwNodeIndex &rIdx )
*/
SwCursorShell::SwCursorShell( SwCursorShell& rShell, vcl::Window *pInitWin )
: SwViewShell( rShell, pInitWin )
- , SwModify()
+ , sw::BroadcastingModify()
, m_pStackCursor( nullptr )
, m_pBlockCursor( nullptr )
, m_pTableCursor( nullptr )
@@ -2949,7 +2949,7 @@ SwCursorShell::SwCursorShell( SwCursorShell& rShell, vcl::Window *pInitWin )
SwCursorShell::SwCursorShell( SwDoc& rDoc, vcl::Window *pInitWin,
const SwViewOption *pInitOpt )
: SwViewShell( rDoc, pInitWin, pInitOpt )
- , SwModify()
+ , sw::BroadcastingModify()
, m_pStackCursor( nullptr )
, m_pBlockCursor( nullptr )
, m_pTableCursor( nullptr )
diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx
index 2a8da69042cb..b1220181df54 100644
--- a/sw/source/core/fields/fldbas.cxx
+++ b/sw/source/core/fields/fldbas.cxx
@@ -128,7 +128,7 @@ OUString SwFieldType::GetTypeStr(SwFieldTypesEnum nTypeId)
// each field references a field type that is unique for each document
SwFieldType::SwFieldType( SwFieldIds nWhichId )
- : SwModify()
+ : sw::BroadcastingModify()
, m_nWhich(nWhichId)
{
}
diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index 5fe089282a84..d642beced472 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -42,7 +42,7 @@
#include <hints.hxx>
SwPageDesc::SwPageDesc(const OUString& rName, SwFrameFormat *pFormat, SwDoc *const pDoc)
- : SwModify()
+ : sw::BroadcastingModify()
, m_StyleName( rName )
, m_Master( pDoc->GetAttrPool(), rName, pFormat )
, m_Left( pDoc->GetAttrPool(), rName, pFormat )
@@ -62,8 +62,7 @@ SwPageDesc::SwPageDesc(const OUString& rName, SwFrameFormat *pFormat, SwDoc *con
}
SwPageDesc::SwPageDesc( const SwPageDesc &rCpy )
- : SwModify()
- , BroadcasterMixin()
+ : sw::BroadcastingModify()
, m_StyleName( rCpy.GetName() )
, m_NumType( rCpy.GetNumType() )
, m_Master( rCpy.GetMaster() )
diff --git a/sw/source/core/txtnode/atrftn.cxx b/sw/source/core/txtnode/atrftn.cxx
index ecf9f2d3ff37..7726eac055d1 100644
--- a/sw/source/core/txtnode/atrftn.cxx
+++ b/sw/source/core/txtnode/atrftn.cxx
@@ -123,7 +123,7 @@ namespace {
SwFormatFootnote::SwFormatFootnote( bool bEndNote )
: SfxPoolItem( RES_TXTATR_FTN )
- , SwModify()
+ , sw::BroadcastingModify()
, m_pTextAttr(nullptr)
, m_nNumber(0)
, m_nNumberRLHidden(0)
diff --git a/sw/source/core/txtnode/atrref.cxx b/sw/source/core/txtnode/atrref.cxx
index 88292c8a2f7d..62302ae013d9 100644
--- a/sw/source/core/txtnode/atrref.cxx
+++ b/sw/source/core/txtnode/atrref.cxx
@@ -29,7 +29,7 @@ SwFormatRefMark::~SwFormatRefMark( )
SwFormatRefMark::SwFormatRefMark( const OUString& rName )
: SfxPoolItem(RES_TXTATR_REFMARK)
- , SwModify()
+ , sw::BroadcastingModify()
, m_pTextAttr(nullptr)
, m_aRefName(rName)
{
@@ -37,8 +37,7 @@ SwFormatRefMark::SwFormatRefMark( const OUString& rName )
SwFormatRefMark::SwFormatRefMark( const SwFormatRefMark& rAttr )
: SfxPoolItem(RES_TXTATR_REFMARK)
- , SwModify()
- , BroadcasterMixin()
+ , sw::BroadcastingModify()
, m_pTextAttr(nullptr)
, m_aRefName(rAttr.m_aRefName)
{
diff --git a/sw/source/core/txtnode/fmtatr2.cxx b/sw/source/core/txtnode/fmtatr2.cxx
index cf9d57dd79a9..add813112a29 100644
--- a/sw/source/core/txtnode/fmtatr2.cxx
+++ b/sw/source/core/txtnode/fmtatr2.cxx
@@ -634,7 +634,7 @@ namespace sw {
Meta::Meta(SwFormatMeta * const i_pFormat)
: ::sfx2::Metadatable()
- , SwModify()
+ , sw::BroadcastingModify()
, m_pFormat(i_pFormat)
, m_pTextNode(nullptr)
{