diff options
author | Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org> | 2019-09-25 09:15:59 +0200 |
---|---|---|
committer | Björn Michaelsen <bjoern.michaelsen@libreoffice.org> | 2019-09-26 12:47:12 +0200 |
commit | 7258c47364a8a9b7cd108cc076243c96f1c1c0f2 (patch) | |
tree | 8085023796bef98526936c5c98a9b0366bd6ca66 /sw | |
parent | bc27ced45cf634ff3fbeef2605cae88ac1f1f0a1 (diff) |
SwAccessibleTable/SwAccessibleTableColHeaders: SwClient no more
Change-Id: I0ca9f9d38f9f990fe4a41319d8dbd9b204544f49
Reviewed-on: https://gerrit.libreoffice.org/79506
Tested-by: Jenkins
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@libreoffice.org>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/access/acctable.cxx | 39 | ||||
-rw-r--r-- | sw/source/core/access/acctable.hxx | 9 |
2 files changed, 20 insertions, 28 deletions
diff --git a/sw/source/core/access/acctable.cxx b/sw/source/core/access/acctable.cxx index 64f7fed7bd01..7094aeecbb01 100644 --- a/sw/source/core/access/acctable.cxx +++ b/sw/source/core/access/acctable.cxx @@ -671,8 +671,9 @@ SwAccessibleTable::SwAccessibleTable( const SwTabFrame* pTabFrame ) : SwAccessibleContext( pInitMap, AccessibleRole::TABLE, pTabFrame ) { - const SwFrameFormat *pFrameFormat = pTabFrame->GetFormat(); - const_cast< SwFrameFormat * >( pFrameFormat )->Add( this ); + const SwFrameFormat* pFrameFormat = pTabFrame->GetFormat(); + if(pFrameFormat) + StartListening(const_cast<SwFrameFormat*>(pFrameFormat)->GetNotifier()); SetName( pFrameFormat->GetName() + "-" + OUString::number( pTabFrame->GetPhyPageNum() ) ); @@ -690,17 +691,19 @@ SwAccessibleTable::~SwAccessibleTable() mpTableData.reset(); } -void SwAccessibleTable::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) +void SwAccessibleTable::Notify(const SfxHint& rHint) { - sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; - const SwTabFrame *pTabFrame = static_cast< const SwTabFrame * >( GetFrame() ); - switch( nWhich ) + if(rHint.GetId() == SfxHintId::Dying) { - case RES_NAME_CHANGED: - if( pTabFrame ) + EndListeningAll(); + } + else if(auto pLegacyHint = dynamic_cast<const sw::LegacyModifyHint*>(&rHint)) + { + sal_uInt16 nWhich = pLegacyHint->m_pOld ? pLegacyHint->m_pOld->Which() : pLegacyHint->m_pNew ? pLegacyHint->m_pNew->Which() : 0; + const SwTabFrame* pTabFrame = static_cast<const SwTabFrame*>(GetFrame()); + if(nWhich == RES_NAME_CHANGED && pTabFrame) { const SwFrameFormat *pFrameFormat = pTabFrame->GetFormat(); - OSL_ENSURE( pFrameFormat == GetRegisteredIn(), "invalid frame" ); const OUString sOldName( GetName() ); const OUString sNewTabName = pFrameFormat->GetName(); @@ -729,17 +732,6 @@ void SwAccessibleTable::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew FireAccessibleEvent( aEvent ); } } - break; - - case RES_OBJECTDYING: - // mba: it seems that this class intentionally does not call code in base class SwClient - if( pOld && ( GetRegisteredIn() == static_cast< SwModify *>( static_cast< const SwPtrMsgPoolItem * >( pOld )->pObject ) ) ) - EndListeningAll(); - break; - - default: - // mba: former call to base class method removed as it is meant to handle only RES_OBJECTDYING - break; } } @@ -1703,8 +1695,9 @@ SwAccessibleTableColHeaders::SwAccessibleTableColHeaders( { SolarMutexGuard aGuard; - const SwFrameFormat *pFrameFormat = pTabFrame->GetFormat(); - const_cast< SwFrameFormat * >( pFrameFormat )->Add( this ); + const SwFrameFormat* pFrameFormat = pTabFrame->GetFormat(); + if(pFrameFormat) + StartListening(const_cast<SwFrameFormat*>(pFrameFormat)->GetNotifier()); const OUString aName = pFrameFormat->GetName() + "-ColumnHeaders"; SetName( aName + "-" + OUString::number( pTabFrame->GetPhyPageNum() ) ); @@ -1722,7 +1715,7 @@ std::unique_ptr<SwAccessibleTableData_Impl> SwAccessibleTableColHeaders::CreateN return std::unique_ptr<SwAccessibleTableData_Impl>(new SwAccessibleTableData_Impl( *(GetMap()), pTabFrame, IsInPagePreview(), true )); } -void SwAccessibleTableColHeaders::Modify( const SfxPoolItem * /*pOld*/, const SfxPoolItem * /*pNew*/ ) +void SwAccessibleTableColHeaders::Notify(const SfxHint& ) { } diff --git a/sw/source/core/access/acctable.hxx b/sw/source/core/access/acctable.hxx index 39a21f024aa7..4da4944ba2c2 100644 --- a/sw/source/core/access/acctable.hxx +++ b/sw/source/core/access/acctable.hxx @@ -26,8 +26,7 @@ #include <com/sun/star/accessibility/XAccessibleSelection.hpp> #include <svl/poolitem.hxx> - -#include <calbck.hxx> +#include <svl/listener.hxx> #include "acccontext.hxx" @@ -45,7 +44,7 @@ class SwAccessibleTable : public css::accessibility::XAccessibleTable, public css::accessibility::XAccessibleSelection, public css::accessibility::XAccessibleTableSelection, - public SwClient + public SvtListener { std::unique_ptr<SwAccessibleTableData_Impl> mpTableData; // the table's data, protected by SolarMutex OUString m_sDesc; @@ -87,7 +86,7 @@ protected: // Is table data evailable? bool HasTableData() const { return (mpTableData != nullptr); } - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override; + virtual void Notify(const SfxHint&) override; public: SwAccessibleTable(std::shared_ptr<SwAccessibleMap> const& pInitMap, @@ -239,7 +238,7 @@ protected: {} virtual std::unique_ptr<SwAccessibleTableData_Impl> CreateNewTableData() override; - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override; + virtual void Notify(const SfxHint&) override; public: SwAccessibleTableColHeaders(std::shared_ptr<SwAccessibleMap> const& pMap, |