summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@libreoffice.org>2019-09-25 09:15:59 +0200
committerBjörn Michaelsen <bjoern.michaelsen@libreoffice.org>2019-09-26 12:47:12 +0200
commit7258c47364a8a9b7cd108cc076243c96f1c1c0f2 (patch)
tree8085023796bef98526936c5c98a9b0366bd6ca66 /sw
parentbc27ced45cf634ff3fbeef2605cae88ac1f1f0a1 (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.cxx39
-rw-r--r--sw/source/core/access/acctable.hxx9
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,