[Libreoffice-commits] core.git: 2 commits - sw/inc sw/source
Bjoern Michaelsen
bjoern.michaelsen at libreoffice.org
Mon May 28 06:20:09 UTC 2018
sw/inc/fmtmeta.hxx | 1
sw/inc/unochart.hxx | 7 ---
sw/source/core/txtnode/fmtatr2.cxx | 6 +--
sw/source/core/unocore/unochart.cxx | 6 ---
sw/source/core/unocore/unorefmk.cxx | 70 ++++++++++++++++--------------------
5 files changed, 38 insertions(+), 52 deletions(-)
New commits:
commit 538c6219a2a347f9f601288a2dd345bf7d3c3209
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
Date: Thu May 10 10:51:42 2018 +0200
dont use SwClient/SwModify in unocore: Meta
Change-Id: Icde1f5b9af599ca8b1ef52863c2772670659a39b
Reviewed-on: https://gerrit.libreoffice.org/54648
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
diff --git a/sw/inc/fmtmeta.hxx b/sw/inc/fmtmeta.hxx
index 9fe0fce07656..bcc93b107e77 100644
--- a/sw/inc/fmtmeta.hxx
+++ b/sw/inc/fmtmeta.hxx
@@ -127,6 +127,7 @@ namespace sw {
class Meta
: public ::sfx2::Metadatable
, public SwModify
+ , public sw::BroadcasterMixin
{
protected:
friend class ::SwFormatMeta; ///< SetFormatMeta, NotifyChangeTextNode
diff --git a/sw/source/core/txtnode/fmtatr2.cxx b/sw/source/core/txtnode/fmtatr2.cxx
index 374326f40eb6..f74696687558 100644
--- a/sw/source/core/txtnode/fmtatr2.cxx
+++ b/sw/source/core/txtnode/fmtatr2.cxx
@@ -664,9 +664,7 @@ void Meta::NotifyChangeTextNode(SwTextNode *const pTextNode)
}
if (!pTextNode) // text node gone? invalidate UNO object!
{
- SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT,
- &static_cast<SwModify&>(*this) ); // cast to base class!
- Modify(&aMsgHint, &aMsgHint);
+ GetNotifier().Broadcast(SfxHint(SfxHintId::Deinitializing));
}
}
@@ -674,9 +672,11 @@ void Meta::NotifyChangeTextNode(SwTextNode *const pTextNode)
void Meta::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew )
{
NotifyClients(pOld, pNew);
+ GetNotifier().Broadcast(SfxHint(SfxHintId::DataChanged));
if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which()))
{ // invalidate cached uno object
SetXMeta(uno::Reference<rdf::XMetadatable>(nullptr));
+ GetNotifier().Broadcast(SfxHint(SfxHintId::Deinitializing));
}
}
diff --git a/sw/source/core/unocore/unorefmk.cxx b/sw/source/core/unocore/unorefmk.cxx
index b989ad8a28fe..41793c482bbe 100644
--- a/sw/source/core/unocore/unorefmk.cxx
+++ b/sw/source/core/unocore/unorefmk.cxx
@@ -607,8 +607,7 @@ SwXMetaText::createTextCursorByRange(
// the Meta has a cached list of text portions for its contents
// this list is created by SwXTextPortionEnumeration
// the Meta listens at the SwTextNode and throws away the cache when it changes
-class SwXMeta::Impl
- : public SwClient
+class SwXMeta::Impl : public SvtListener
{
private:
::osl::Mutex m_Mutex; // just for OInterfaceContainerHelper2
@@ -622,56 +621,53 @@ public:
bool m_bIsDescriptor;
uno::Reference<text::XText> m_xParentText;
rtl::Reference<SwXMetaText> m_xText;
+ sw::Meta* m_pMeta;
- Impl( SwXMeta & rThis, SwDoc & rDoc,
- ::sw::Meta * const pMeta,
+ Impl(SwXMeta& rThis, SwDoc& rDoc,
+ ::sw::Meta* const pMeta,
uno::Reference<text::XText> const& xParentText,
TextRangeList_t const * const pPortions)
- : SwClient(pMeta)
- , m_EventListeners(m_Mutex)
- , m_pTextPortions( pPortions )
- , m_bIsDisposed( false )
+ : m_EventListeners(m_Mutex)
+ , m_pTextPortions(pPortions)
+ , m_bIsDisposed(false)
, m_bIsDescriptor(nullptr == pMeta)
, m_xParentText(xParentText)
, m_xText(new SwXMetaText(rDoc, rThis))
+ , m_pMeta(pMeta)
{
+ !m_bIsDescriptor && StartListening(m_pMeta->GetNotifier());
}
- inline const ::sw::Meta * GetMeta() const;
+ inline const ::sw::Meta* GetMeta() const;
// only for SwXMetaField!
- inline const ::sw::MetaField * GetMetaField() const;
+ inline const ::sw::MetaField* GetMetaField() const;
protected:
- // SwClient
- virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override;
+ virtual void Notify(const SfxHint& rHint) override;
};
-inline const ::sw::Meta * SwXMeta::Impl::GetMeta() const
+inline const ::sw::Meta* SwXMeta::Impl::GetMeta() const
{
- return static_cast< const ::sw::Meta * >(GetRegisteredIn());
+ return m_pMeta;
}
// SwModify
-void SwXMeta::Impl::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
+void SwXMeta::Impl::Notify(const SfxHint& rHint)
{
m_pTextPortions.reset(); // throw away cache (SwTextNode changed)
-
- ClientModify(this, pOld, pNew);
-
- if (GetRegisteredIn())
+ if(rHint.GetId() == SfxHintId::Dying || rHint.GetId() == SfxHintId::Deinitializing)
{
- return; // core object still alive
- }
-
- m_bIsDisposed = true;
- m_xText->Invalidate();
- uno::Reference<uno::XInterface> const xThis(m_wThis);
- if (!xThis.is())
- { // fdo#72695: if UNO object is already dead, don't revive it with event
- return;
+ m_bIsDisposed = true;
+ m_pMeta = nullptr;
+ m_xText->Invalidate();
+ uno::Reference<uno::XInterface> const xThis(m_wThis);
+ if (!xThis.is())
+ { // fdo#72695: if UNO object is already dead, don't revive it with event
+ return;
+ }
+ lang::EventObject const ev(xThis);
+ m_EventListeners.disposeAndClear(ev);
}
- lang::EventObject const ev(xThis);
- m_EventListeners.disposeAndClear(ev);
}
uno::Reference<text::XText> const & SwXMeta::GetParentText() const
@@ -1020,7 +1016,9 @@ SwXMeta::AttachImpl(const uno::Reference< text::XTextRange > & i_xTextRange,
static_cast< ::cppu::OWeakObject* >(this));
}
- pMeta->Add(m_pImpl.get());
+ m_pImpl->EndListeningAll();
+ m_pImpl->m_pMeta = pMeta.get();
+ m_pImpl->StartListening(pMeta->GetNotifier());
pMeta->SetXMeta(uno::Reference<rdf::XMetadatable>(this));
m_pImpl->m_xParentText = ::sw::CreateParentXText(*pDoc, *aPam.GetPoint());
@@ -1186,12 +1184,10 @@ SwXMeta::getElementType()
return cppu::UnoType<text::XTextRange>::get();
}
-sal_Bool SAL_CALL
-SwXMeta::hasElements()
+sal_Bool SAL_CALL SwXMeta::hasElements()
{
SolarMutexGuard g;
-
- return m_pImpl->GetRegisteredIn() != nullptr;
+ return m_pImpl->m_pMeta != nullptr;
}
// XEnumerationAccess
@@ -1253,9 +1249,9 @@ uno::Reference<frame::XModel> SwXMeta::GetModel()
return nullptr;
}
-inline const ::sw::MetaField * SwXMeta::Impl::GetMetaField() const
+inline const ::sw::MetaField* SwXMeta::Impl::GetMetaField() const
{
- return static_cast< const ::sw::MetaField * >(GetRegisteredIn());
+ return dynamic_cast<sw::MetaField*>(m_pMeta);
}
SwXMetaField::SwXMetaField(SwDoc *const pDoc, ::sw::Meta *const pMeta,
commit 74aeeb9a6293b87df26cf6db565d50c26da2c3fe
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
Date: Thu May 10 10:51:42 2018 +0200
dont use SwClient/SwModify in unocore: ChartDataProvider
- and to the couragous person writing that comment:
* yes, likely you should have come back to check if this was
superfluous
* no, you didnt (so far)
Change-Id: I56633aee4b49979b60417f88235e9393c0bc48c8
Reviewed-on: https://gerrit.libreoffice.org/54895
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
diff --git a/sw/inc/unochart.hxx b/sw/inc/unochart.hxx
index ff11d96a25f5..cbbe98b235cb 100644
--- a/sw/inc/unochart.hxx
+++ b/sw/inc/unochart.hxx
@@ -100,8 +100,7 @@ typedef cppu::WeakImplHelper
SwChartDataProviderBaseClass;
class SwChartDataProvider :
- public SwChartDataProviderBaseClass,
- public SwClient
+ public SwChartDataProviderBaseClass
{
// used to keep weak-references to all data-sequences of a single table
@@ -142,10 +141,6 @@ class SwChartDataProvider :
static OUString GetBrokenCellRangeForExport( const OUString &rCellRangeRepresentation );
-protected:
- //SwClient
- virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override;
-
public:
SwChartDataProvider( const SwDoc* pDoc );
virtual ~SwChartDataProvider() override;
diff --git a/sw/source/core/unocore/unochart.cxx b/sw/source/core/unocore/unochart.cxx
index 130f0fa22181..9821b5c3cba6 100644
--- a/sw/source/core/unocore/unochart.cxx
+++ b/sw/source/core/unocore/unochart.cxx
@@ -1455,12 +1455,6 @@ uno::Sequence< OUString > SAL_CALL SwChartDataProvider::getSupportedServiceNames
return { "com.sun.star.chart2.data.DataProvider"};
}
-void SwChartDataProvider::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew)
-{
- // actually this function should be superfluous (need to check later)
- ClientModify(this, pOld, pNew );
-}
-
void SwChartDataProvider::AddDataSequence( const SwTable &rTable, uno::Reference< chart2::data::XDataSequence > const &rxDataSequence )
{
aDataSequences[ &rTable ].insert( rxDataSequence );
More information about the Libreoffice-commits
mailing list