compilerplugins/clang/mergeclasses.results | 1 include/svtools/brwbox.hxx | 3 include/vcl/accessibility/AccessibleBrowseBox.hxx | 95 ---------------------- include/vcl/accessibletableprovider.hxx | 64 -------------- svtools/source/brwbox/brwbox1.cxx | 6 - svtools/source/brwbox/brwbox3.cxx | 29 ++---- svtools/source/brwbox/editbrowsebox.cxx | 3 svtools/source/brwbox/editbrowsebox2.cxx | 15 +-- svtools/source/brwbox/editbrowseboximpl.hxx | 4 vcl/source/accessibility/AccessibleBrowseBox.cxx | 60 ------------- vcl/source/accessibility/accessibletablistbox.cxx | 7 - 11 files changed, 33 insertions(+), 254 deletions(-)
New commits: commit e109310429411a4d7621c1418ea9823563b9b9a2 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu Feb 6 11:00:26 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Feb 7 11:13:51 2025 +0100 browsebox a11y: Use reference to concrete EditBrowseBoxTableCellAccess Change-Id: Ie564f4e26caa76dd8c400219ea5d509a6abe8106 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181218 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx index 86bc44e4adb0..03f481e0027d 100644 --- a/svtools/source/brwbox/editbrowsebox.cxx +++ b/svtools/source/brwbox/editbrowsebox.cxx @@ -1013,7 +1013,8 @@ namespace svt if ( isAccessibleAlive() && m_aImpl->m_xActiveCell) { - commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(), Any(m_aImpl->m_xActiveCell)); + css::uno::Reference<css::accessibility::XAccessible> xCell = m_aImpl->m_xActiveCell; + commitBrowseBoxEvent(AccessibleEventId::CHILD, Any(), Any(xCell)); m_aImpl->clearActiveCell(); } diff --git a/svtools/source/brwbox/editbrowsebox2.cxx b/svtools/source/brwbox/editbrowsebox2.cxx index 220f2dc0f581..0c089650ac09 100644 --- a/svtools/source/brwbox/editbrowsebox2.cxx +++ b/svtools/source/brwbox/editbrowsebox2.cxx @@ -78,7 +78,8 @@ void EditBrowseBox::implCreateActiveAccessible( ) *this, // the browse box GetCurRow(), GetColumnPos(GetCurColumnId())); - commitBrowseBoxEvent( CHILD, Any( m_aImpl->m_xActiveCell ), Any() ); + css::uno::Reference<css::accessibility::XAccessible> xCell = m_aImpl->m_xActiveCell; + commitBrowseBoxEvent(CHILD, Any(xCell), Any()); } @@ -97,16 +98,10 @@ Reference< XAccessible > EditBrowseBox::CreateAccessibleControl( sal_Int32 _nInd void EditBrowseBoxImpl::clearActiveCell() { - try - { - ::comphelper::disposeComponent(m_xActiveCell); - } - catch(const Exception&) - { - TOOLS_WARN_EXCEPTION( "svtools", "EditBrowseBoxImpl::clearActiveCell: caught an exception while disposing the AccessibleCell!" ); - } + if (m_xActiveCell) + m_xActiveCell->dispose(); - m_xActiveCell = nullptr; + m_xActiveCell.clear(); } void EditBrowseBox::GrabTableFocus() diff --git a/svtools/source/brwbox/editbrowseboximpl.hxx b/svtools/source/brwbox/editbrowseboximpl.hxx index f71aab9b7654..b2780124833a 100644 --- a/svtools/source/brwbox/editbrowseboximpl.hxx +++ b/svtools/source/brwbox/editbrowseboximpl.hxx @@ -18,7 +18,7 @@ */ #pragma once -#include <com/sun/star/accessibility/XAccessible.hpp> +#include <vcl/accessibility/accessibleeditbrowseboxcell.hxx> namespace svt { @@ -26,7 +26,7 @@ namespace svt class EditBrowseBoxImpl { public: - css::uno::Reference< css::accessibility::XAccessible > m_xActiveCell; + rtl::Reference<EditBrowseBoxTableCellAccess> m_xActiveCell; void clearActiveCell(); }; commit cc8d3dac879ce8be66b785efdfe62be4ca6676bd Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu Feb 6 10:17:47 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Feb 7 11:13:44 2025 +0100 browsebox a11y: Drop AccessibleBrowseBoxAccess So far, AccessibleBrowseBoxAccess was the XAccessible implementation for the BrowseBox (in svtools) while AccessibleBrowseBox is the XAccessibleContext implementation that AccessibleBrowseBoxAccess::getAccessibleContext() returns. AccessibleBrowseBoxAccess has some additional methods that call the corresponding AccessibleBrowseBox methods. Drop AccessibleBrowseBoxAccess and instead let AccessibleBrowseBox be the XAccessible and XAccessibleContext implementation for BrowseBox at the same time. AccessibleBrowseBox already implements the XAccessible interface (and AccessibleBrowseBox::getAccessibleContext() returns a reference to self) since Change-Id: I5cc292e86e2549fa15e00edcc417308d18335b9e Author: Michael Weghorn <m.wegh...@posteo.de> Date: Wed Feb 5 16:45:43 2025 +0100 browsebox a11y: Let AccessibleBrowseBox implement XAccessible Let AccessibleBrowseBox implement the XAccessible interface and return a reference to self in its XAccessible::getAccessibleContext implementation. The AccessibleTabListBox subclass was already doing this. Drop the override (that didn't hold the mutex or check whether the accessible is still alive). This also prepares for merging AccessibleBrowseBoxAccess into AccessibleBrowseBox into an upcoming commit. Now that AccessibleBrowseBox is always its own "creator" (i.e. the XAccessible whose associated XAccessibleContext it is), there's no more need to keep track of who created it, so drop AccessibleBrowseBox::m_aCreator and simply use `this` instead. Change-Id: I51099442d600dce0db78a78d37b1f4709c6f95b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181217 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 49aa1b521607..fbf29fcf8d33 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -343,7 +343,7 @@ private: Color m_aCursorColor; // special color for cursor, COL_TRANSPARENT for usual (VCL-painted) "inverted" cursor BrowserMode m_nCurrentMode; // last argument of SetMode (redundant, as our other members represent the current settings, too) - rtl::Reference<AccessibleBrowseBoxAccess> m_xAccessible; + rtl::Reference<AccessibleBrowseBox> m_xAccessible; THeaderCellMap m_aColHeaderCellMap; THeaderCellMap m_aRowHeaderCellMap; diff --git a/include/vcl/accessibility/AccessibleBrowseBox.hxx b/include/vcl/accessibility/AccessibleBrowseBox.hxx index a5f544f8ae58..103b8d57e4ad 100644 --- a/include/vcl/accessibility/AccessibleBrowseBox.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBox.hxx @@ -23,7 +23,6 @@ #include <cppuhelper/weakref.hxx> #include <vcl/accessibility/AccessibleBrowseBoxBase.hxx> #include <vcl/accessibletableprovider.hxx> -#include <mutex> class AccessibleBrowseBoxHeaderBar; class AccessibleBrowseBoxTable; @@ -33,33 +32,23 @@ class AccessibleBrowseBoxTable; class VCL_DLLPUBLIC AccessibleBrowseBox : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxBase, css::accessibility::XAccessible> { - friend class AccessibleBrowseBoxAccess; -protected: +public: AccessibleBrowseBox( const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, - const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator, ::vcl::IAccessibleTableProvider& _rBrowseBox ); +protected: virtual ~AccessibleBrowseBox() override; AccessibleBrowseBox(const AccessibleBrowseBox&) = delete; AccessibleBrowseBox& operator=(const AccessibleBrowseBox&) = delete; - /** sets the XAccessible which created the context - - To be called only once, and only if in the ctor NULL was passed. - */ - void setCreator( - const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator - ); - /** Cleans up members. */ using AccessibleBrowseBoxBase::disposing; virtual void SAL_CALL disposing() override; -protected: // XAccessible css::uno::Reference<css::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext() override; @@ -175,9 +164,6 @@ protected: virtual rtl::Reference<AccessibleBrowseBoxTable> createAccessibleTable(); private: - /// the css::accessibility::XAccessible which created the AccessibleBrowseBox - css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator; - /** The data table child. */ rtl::Reference<AccessibleBrowseBoxTable> mxTable; @@ -188,95 +174,4 @@ private: rtl::Reference<AccessibleBrowseBoxHeaderBar> mxColumnHeaderBar; }; - -/** the XAccessible which creates/returns an AccessibleBrowseBox - - The instance holds its XAccessibleContext with a hard reference, while - the context holds this instance weak. -*/ -class VCL_DLLPUBLIC AccessibleBrowseBoxAccess final : public cppu::WeakImplHelper<css::accessibility::XAccessible> -{ -private: - mutable std::recursive_mutex m_aMutex; - css::uno::Reference< css::accessibility::XAccessible > - m_xParent; - ::vcl::IAccessibleTableProvider& m_rBrowseBox; - - rtl::Reference<AccessibleBrowseBox> m_xContext; - -public: - AccessibleBrowseBoxAccess( - css::uno::Reference< css::accessibility::XAccessible > _xParent, - ::vcl::IAccessibleTableProvider& _rBrowseBox - ); - - virtual ~AccessibleBrowseBoxAccess() override; - - // XAccessible - virtual css::uno::Reference< css::accessibility::XAccessibleContext > - SAL_CALL getAccessibleContext() override; - - void dispose(); - virtual bool isAlive() const - { - std::unique_lock aGuard(m_aMutex); - return m_xContext.is() && m_xContext->isAlive(); - } - virtual css::uno::Reference< css::accessibility::XAccessible > - getHeaderBar( AccessibleBrowseBoxObjType _eObjType ) - { - std::unique_lock aGuard(m_aMutex); - return m_xContext ? m_xContext->getHeaderBar(_eObjType) : nullptr; - } - virtual css::uno::Reference< css::accessibility::XAccessible > - getTable() - { - std::unique_lock aGuard(m_aMutex); - return m_xContext ? m_xContext->getTable() : nullptr; - } - - /** commits the event at all listeners of the column/row header bar - @param nEventId - the event id - @param rNewValue - the new value - @param rOldValue - the old value - */ - virtual void commitHeaderBarEvent( sal_Int16 nEventId, const css::uno::Any& rNewValue, - const css::uno::Any& rOldValue, bool _bColumnHeaderBar ) - { - std::unique_lock aGuard(m_aMutex); - if (m_xContext) - m_xContext->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, _bColumnHeaderBar ); - } - - /** commits the event at all listeners of the table - @param nEventId - the event id - @param rNewValue - the new value - @param rOldValue - the old value - */ - virtual void commitTableEvent( sal_Int16 nEventId, - const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) - { - std::unique_lock aGuard(m_aMutex); - if (m_xContext) - m_xContext->commitTableEvent( nEventId, rNewValue, rOldValue ); - } - virtual void commitEvent( sal_Int16 nEventId, - const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) - { - std::unique_lock aGuard(m_aMutex); - if (m_xContext) - m_xContext->commitEvent( nEventId, rNewValue, rOldValue ); - } - -private: - AccessibleBrowseBoxAccess( const AccessibleBrowseBoxAccess& ) = delete; - AccessibleBrowseBoxAccess& operator=( const AccessibleBrowseBoxAccess& ) = delete; -}; - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/brwbox/brwbox3.cxx b/svtools/source/brwbox/brwbox3.cxx index 92091b2df13c..2aa838318d94 100644 --- a/svtools/source/brwbox/brwbox3.cxx +++ b/svtools/source/brwbox/brwbox3.cxx @@ -76,7 +76,7 @@ Reference< XAccessible > BrowseBox::CreateAccessible() Reference< XAccessible > xAccParent = pParent->GetAccessible(); if( xAccParent.is() ) { - m_xAccessible = new AccessibleBrowseBoxAccess(xAccParent, *this); + m_xAccessible = new AccessibleBrowseBox(xAccParent, *this); } } diff --git a/vcl/source/accessibility/AccessibleBrowseBox.cxx b/vcl/source/accessibility/AccessibleBrowseBox.cxx index ba9203666e9b..2975d87ae454 100644 --- a/vcl/source/accessibility/AccessibleBrowseBox.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBox.cxx @@ -37,24 +37,12 @@ using namespace ::com::sun::star::accessibility; AccessibleBrowseBox::AccessibleBrowseBox( const css::uno::Reference<css::accessibility::XAccessible>& _rxParent, - const css::uno::Reference<css::accessibility::XAccessible>& _rxCreator, ::vcl::IAccessibleTableProvider& _rBrowseBox) : ImplInheritanceHelper(_rxParent, _rBrowseBox, nullptr, AccessibleBrowseBoxObjType::BrowseBox) - , m_aCreator(_rxCreator) { m_xFocusWindow.set(mpBrowseBox->GetWindowInstance()->GetComponentInterface(), css::uno::UNO_QUERY); } -void AccessibleBrowseBox::setCreator( const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator ) -{ -#if OSL_DEBUG_LEVEL > 0 - css::uno::Reference< css::accessibility::XAccessible > xCreator(m_aCreator); - OSL_ENSURE( !xCreator.is(), "AccessibleBrowseBox::setCreator: creator already set!" ); -#endif - m_aCreator = _rxCreator; -} - - AccessibleBrowseBox::~AccessibleBrowseBox() { } @@ -64,8 +52,6 @@ void SAL_CALL AccessibleBrowseBox::disposing() { ::osl::MutexGuard aGuard( getMutex() ); - m_aCreator.clear(); - if ( mxTable.is() ) { mxTable->dispose(); @@ -202,13 +188,13 @@ AccessibleBrowseBox::implGetHeaderBar(AccessibleBrowseBoxObjType eObjType) if( eObjType == AccessibleBrowseBoxObjType::RowHeaderBar ) { if (!mxRowHeaderBar.is()) - mxRowHeaderBar = new AccessibleBrowseBoxHeaderBar(m_aCreator, *mpBrowseBox, eObjType); + mxRowHeaderBar = new AccessibleBrowseBoxHeaderBar(this, *mpBrowseBox, eObjType); return mxRowHeaderBar; } else if( eObjType == AccessibleBrowseBoxObjType::ColumnHeaderBar ) { if (!mxColumnHeaderBar.is()) - mxColumnHeaderBar = new AccessibleBrowseBoxHeaderBar(m_aCreator, *mpBrowseBox, eObjType); + mxColumnHeaderBar = new AccessibleBrowseBoxHeaderBar(this, *mpBrowseBox, eObjType); return mxColumnHeaderBar; } @@ -236,9 +222,7 @@ AccessibleBrowseBox::implGetFixedChild( sal_Int64 nChildIndex ) rtl::Reference<AccessibleBrowseBoxTable> AccessibleBrowseBox::createAccessibleTable() { - css::uno::Reference< css::accessibility::XAccessible > xCreator(m_aCreator); - OSL_ENSURE( xCreator.is(), "AccessibleBrowseBox::createAccessibleTable: my creator died - how this?" ); - return new AccessibleBrowseBoxTable( xCreator, *mpBrowseBox ); + return new AccessibleBrowseBoxTable(this, *mpBrowseBox); } void AccessibleBrowseBox::commitTableEvent(sal_Int16 _nEventId,const Any& _rNewValue,const Any& _rOldValue) @@ -258,42 +242,4 @@ void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId, xHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue); } - -// = AccessibleBrowseBoxAccess - -AccessibleBrowseBoxAccess::AccessibleBrowseBoxAccess( css::uno::Reference< css::accessibility::XAccessible > _xParent, ::vcl::IAccessibleTableProvider& _rBrowseBox ) - :m_xParent(std::move( _xParent )) - ,m_rBrowseBox( _rBrowseBox ) -{ -} - - -AccessibleBrowseBoxAccess::~AccessibleBrowseBoxAccess() -{ -} - - -void AccessibleBrowseBoxAccess::dispose() -{ - std::unique_lock aGuard( m_aMutex ); - - if (m_xContext.is()) - { - m_xContext->dispose(); - m_xContext.clear(); - } - m_xParent.clear(); -} - - -css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL AccessibleBrowseBoxAccess::getAccessibleContext() -{ - std::unique_lock aGuard( m_aMutex ); - - if ( !m_xContext.is() ) - m_xContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox ); - - return m_xContext; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/accessibility/accessibletablistbox.cxx b/vcl/source/accessibility/accessibletablistbox.cxx index 1dfd15006869..281ec34a2145 100644 --- a/vcl/source/accessibility/accessibletablistbox.cxx +++ b/vcl/source/accessibility/accessibletablistbox.cxx @@ -34,14 +34,9 @@ using namespace ::com::sun::star; AccessibleTabListBox::AccessibleTabListBox(const Reference<XAccessible>& rxParent, SvHeaderTabListBox& rBox) - : AccessibleBrowseBox(rxParent, nullptr, rBox) + : AccessibleBrowseBox(rxParent, rBox) , m_pTabListBox(&rBox) { - osl_atomic_increment( &m_refCount ); - { - setCreator( this ); - } - osl_atomic_decrement( &m_refCount ); } commit 9562c1a3560f8522181bbb3f25ec0b8bda035be1 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu Feb 6 09:42:35 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Feb 7 11:13:38 2025 +0100 browsebox a11y: Use "x" prefix for rtl::Reference Change-Id: I6f187d97989a4989ac7a32ce994b16fac2d2974c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181208 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 5a3215d99baa..49aa1b521607 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -343,7 +343,7 @@ private: Color m_aCursorColor; // special color for cursor, COL_TRANSPARENT for usual (VCL-painted) "inverted" cursor BrowserMode m_nCurrentMode; // last argument of SetMode (redundant, as our other members represent the current settings, too) - rtl::Reference<AccessibleBrowseBoxAccess> m_pAccessible; + rtl::Reference<AccessibleBrowseBoxAccess> m_xAccessible; THeaderCellMap m_aColHeaderCellMap; THeaderCellMap m_aRowHeaderCellMap; diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 11f750b96b5c..b727e863e7a3 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -195,12 +195,12 @@ BrowseBox::~BrowseBox() void BrowseBox::DisposeAccessible() { - if (m_pAccessible ) + if (m_xAccessible) { disposeAndClearHeaderCell(m_aColHeaderCellMap); disposeAndClearHeaderCell(m_aRowHeaderCellMap); - m_pAccessible->dispose(); - m_pAccessible = nullptr; + m_xAccessible->dispose(); + m_xAccessible = nullptr; } } diff --git a/svtools/source/brwbox/brwbox3.cxx b/svtools/source/brwbox/brwbox3.cxx index 27588d48a92d..92091b2df13c 100644 --- a/svtools/source/brwbox/brwbox3.cxx +++ b/svtools/source/brwbox/brwbox3.cxx @@ -54,15 +54,15 @@ Reference<XAccessible> BrowseBox::getAccessibleHeaderCell(BrowseBox::THeaderCell Reference<XAccessible> BrowseBox::getAccessibleHeaderBar(AccessibleBrowseBoxObjType _eObjType) { - if (m_pAccessible && m_pAccessible->isAlive()) - return m_pAccessible->getHeaderBar(_eObjType); + if (m_xAccessible && m_xAccessible->isAlive()) + return m_xAccessible->getHeaderBar(_eObjType); return nullptr; } Reference<XAccessible> BrowseBox::getAccessibleTable() { - if (m_pAccessible && m_pAccessible->isAlive()) - return m_pAccessible->getTable(); + if (m_xAccessible && m_xAccessible->isAlive()) + return m_xAccessible->getTable(); return nullptr; } @@ -71,16 +71,16 @@ Reference< XAccessible > BrowseBox::CreateAccessible() vcl::Window* pParent = GetAccessibleParentWindow(); DBG_ASSERT( pParent, "BrowseBox::CreateAccessible - parent not found" ); - if (pParent && !m_pAccessible) + if (pParent && !m_xAccessible) { Reference< XAccessible > xAccParent = pParent->GetAccessible(); if( xAccParent.is() ) { - m_pAccessible = new AccessibleBrowseBoxAccess(xAccParent, *this); + m_xAccessible = new AccessibleBrowseBoxAccess(xAccParent, *this); } } - return m_pAccessible; + return m_xAccessible; } @@ -89,7 +89,7 @@ Reference< XAccessible > BrowseBox::CreateAccessible() Reference< XAccessible > BrowseBox::CreateAccessibleCell( sal_Int32 _nRow, sal_uInt16 _nColumnPos ) { // BBINDEX_TABLE must be the table - OSL_ENSURE(m_pAccessible,"Invalid call: Accessible is null"); + OSL_ENSURE(m_xAccessible, "Invalid call: Accessible is null"); return new AccessibleBrowseBoxTableCell(getAccessibleTable(), *this, _nRow, _nColumnPos, OFFSET_DEFAULT); @@ -367,26 +367,22 @@ void BrowseBox::commitHeaderBarEvent(sal_Int16 nEventId, const Any& rNewValue, const Any& rOldValue, bool _bColumnHeaderBar ) { if ( isAccessibleAlive() ) - m_pAccessible->commitHeaderBarEvent( nEventId, - rNewValue, rOldValue, _bColumnHeaderBar ); + m_xAccessible->commitHeaderBarEvent(nEventId, rNewValue, rOldValue, _bColumnHeaderBar); } void BrowseBox::commitTableEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue ) { if ( isAccessibleAlive() ) - m_pAccessible->commitTableEvent(_nEventId, _rNewValue, _rOldValue); + m_xAccessible->commitTableEvent(_nEventId, _rNewValue, _rOldValue); } void BrowseBox::commitBrowseBoxEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue ) { if ( isAccessibleAlive() ) - m_pAccessible->commitEvent( _nEventId, _rNewValue, _rOldValue); + m_xAccessible->commitEvent(_nEventId, _rNewValue, _rOldValue); } -bool BrowseBox::isAccessibleAlive( ) const -{ - return m_pAccessible && m_pAccessible->isAlive(); -} +bool BrowseBox::isAccessibleAlive() const { return m_xAccessible && m_xAccessible->isAlive(); } // IAccessibleTableProvider commit 783e6b70b4fd5a78dabf6677301a116c50a18e0d Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu Feb 6 09:38:11 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Fri Feb 7 11:13:29 2025 +0100 browsebox a11y: Drop IAccessibleBrowseBox iface Switch BrowseBox::m_pAccessible from a Reference to the IAccessibleBrowseBox iface to a Reference to the specific AccessibleBrowseBoxAccess subclass and drop the IAccessibleBrowseBox interface. Change-Id: Iecc518232eceecc922b69b8c3a4c89f27e6e4c3d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181207 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/compilerplugins/clang/mergeclasses.results b/compilerplugins/clang/mergeclasses.results index 1517f8eda100..39636add741f 100644 --- a/compilerplugins/clang/mergeclasses.results +++ b/compilerplugins/clang/mergeclasses.results @@ -711,7 +711,6 @@ maybe merge utl::OConfigurationValueContainer with svxform::FmSearchConfigItem, merge utl::OInputStreamWrapper_Base with utl::OInputStreamWrapper merge vcl::DeletionNotifier with SalFrame merge vcl::ExtOutDevData with vcl::PDFExtOutDevData -merge vcl::IAccessibleBrowseBox with AccessibleBrowseBoxAccess maybe merge vcl::PDFOutputStream with (anonymous namespace)::PDFExportStreamDoc, in modules vcl and filter merge vcl::SolarThreadExecutor with vcl::solarthread::detail::GenericSolarThreadExecutor merge vcl::font::GlyphFallbackFontSubstitution with (anonymous namespace)::FcGlyphFallbackSubstitution diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 2290fa1a1606..5a3215d99baa 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -26,6 +26,7 @@ #include <vcl/headbar.hxx> #include <vcl/transfer.hxx> #include <vcl/timer.hxx> +#include <vcl/accessibility/AccessibleBrowseBox.hxx> #include <vcl/accessibility/AccessibleBrowseBoxObjType.hxx> #include <vcl/accessibletableprovider.hxx> #include <vector> @@ -342,7 +343,7 @@ private: Color m_aCursorColor; // special color for cursor, COL_TRANSPARENT for usual (VCL-painted) "inverted" cursor BrowserMode m_nCurrentMode; // last argument of SetMode (redundant, as our other members represent the current settings, too) - rtl::Reference<vcl::IAccessibleBrowseBox> m_pAccessible; + rtl::Reference<AccessibleBrowseBoxAccess> m_pAccessible; THeaderCellMap m_aColHeaderCellMap; THeaderCellMap m_aRowHeaderCellMap; diff --git a/include/vcl/accessibility/AccessibleBrowseBox.hxx b/include/vcl/accessibility/AccessibleBrowseBox.hxx index 40843493309f..a5f544f8ae58 100644 --- a/include/vcl/accessibility/AccessibleBrowseBox.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBox.hxx @@ -30,7 +30,7 @@ class AccessibleBrowseBoxTable; /** This class represents the complete accessible BrowseBox object. */ -class AccessibleBrowseBox +class VCL_DLLPUBLIC AccessibleBrowseBox : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxBase, css::accessibility::XAccessible> { friend class AccessibleBrowseBoxAccess; @@ -194,7 +194,7 @@ private: The instance holds its XAccessibleContext with a hard reference, while the context holds this instance weak. */ -class VCL_DLLPUBLIC AccessibleBrowseBoxAccess final : public ::vcl::IAccessibleBrowseBox +class VCL_DLLPUBLIC AccessibleBrowseBoxAccess final : public cppu::WeakImplHelper<css::accessibility::XAccessible> { private: mutable std::recursive_mutex m_aMutex; @@ -210,48 +210,64 @@ public: ::vcl::IAccessibleTableProvider& _rBrowseBox ); -private: virtual ~AccessibleBrowseBoxAccess() override; // XAccessible virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override; - // IAccessibleBrowseBox - void dispose() override; - virtual bool isAlive() const override + void dispose(); + virtual bool isAlive() const { std::unique_lock aGuard(m_aMutex); return m_xContext.is() && m_xContext->isAlive(); } virtual css::uno::Reference< css::accessibility::XAccessible > - getHeaderBar( AccessibleBrowseBoxObjType _eObjType ) override + getHeaderBar( AccessibleBrowseBoxObjType _eObjType ) { std::unique_lock aGuard(m_aMutex); return m_xContext ? m_xContext->getHeaderBar(_eObjType) : nullptr; } virtual css::uno::Reference< css::accessibility::XAccessible > - getTable() override + getTable() { std::unique_lock aGuard(m_aMutex); return m_xContext ? m_xContext->getTable() : nullptr; } + + /** commits the event at all listeners of the column/row header bar + @param nEventId + the event id + @param rNewValue + the new value + @param rOldValue + the old value + */ virtual void commitHeaderBarEvent( sal_Int16 nEventId, const css::uno::Any& rNewValue, - const css::uno::Any& rOldValue, bool _bColumnHeaderBar ) override + const css::uno::Any& rOldValue, bool _bColumnHeaderBar ) { std::unique_lock aGuard(m_aMutex); if (m_xContext) m_xContext->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, _bColumnHeaderBar ); } + + /** commits the event at all listeners of the table + @param nEventId + the event id + @param rNewValue + the new value + @param rOldValue + the old value + */ virtual void commitTableEvent( sal_Int16 nEventId, - const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override + const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) { std::unique_lock aGuard(m_aMutex); if (m_xContext) m_xContext->commitTableEvent( nEventId, rNewValue, rOldValue ); } virtual void commitEvent( sal_Int16 nEventId, - const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override + const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) { std::unique_lock aGuard(m_aMutex); if (m_xContext) diff --git a/include/vcl/accessibletableprovider.hxx b/include/vcl/accessibletableprovider.hxx index 6aeb4b4ca760..bc43c4735d95 100644 --- a/include/vcl/accessibletableprovider.hxx +++ b/include/vcl/accessibletableprovider.hxx @@ -126,70 +126,6 @@ protected: ~IAccessibleTableProvider() {} }; -/** interface for an implementation of a browse box's Accessible component -*/ -class IAccessibleBrowseBox : public cppu::WeakImplHelper<css::accessibility::XAccessible> -{ -public: - /** disposes the accessible implementation, so that it becomes defunc - */ - virtual void dispose() = 0; - - /** checks whether the accessible implementation, and its context, are still alive - @return <TRUE/>, if the object is not disposed or disposing. - */ - virtual bool isAlive() const = 0; - - /** returns the accessible object for the row or the column header bar - */ - virtual css::uno::Reference< css::accessibility::XAccessible > - getHeaderBar( AccessibleBrowseBoxObjType _eObjType ) = 0; - - /** returns the accessible object for the table representation - */ - virtual css::uno::Reference< css::accessibility::XAccessible > - getTable() = 0; - - /** commits the event at all listeners of the column/row header bar - @param nEventId - the event id - @param rNewValue - the new value - @param rOldValue - the old value - */ - virtual void commitHeaderBarEvent( - sal_Int16 nEventId, - const css::uno::Any& rNewValue, - const css::uno::Any& rOldValue, - bool _bColumnHeaderBar - ) = 0; - - /** commits the event at all listeners of the table - @param nEventId - the event id - @param rNewValue - the new value - @param rOldValue - the old value - */ - virtual void commitTableEvent( - sal_Int16 nEventId, - const css::uno::Any& rNewValue, - const css::uno::Any& rOldValue - ) = 0; - - /** Commits an event to all listeners. */ - virtual void commitEvent( - sal_Int16 nEventId, - const css::uno::Any& rNewValue, - const css::uno::Any& rOldValue - ) = 0; - -protected: - ~IAccessibleBrowseBox() {} -}; - } // namespace vcl #endif // INCLUDED_VCL_ACCESSIBLETABLEPROVIDER_HXX diff --git a/svtools/source/brwbox/brwbox3.cxx b/svtools/source/brwbox/brwbox3.cxx index 8a1c9efff76a..27588d48a92d 100644 --- a/svtools/source/brwbox/brwbox3.cxx +++ b/svtools/source/brwbox/brwbox3.cxx @@ -19,7 +19,6 @@ #include <osl/diagnose.h> #include <svtools/brwbox.hxx> -#include <vcl/accessibility/AccessibleBrowseBox.hxx> #include <vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx> #include <vcl/accessibility/AccessibleBrowseBoxObjType.hxx> #include <vcl/accessibility/AccessibleBrowseBoxTableCell.hxx>