include/vcl/accessibility/AccessibleBrowseBox.hxx | 7 - include/vcl/accessibility/AccessibleBrowseBoxBase.hxx | 64 ---------- include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx | 18 -- include/vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx | 2 include/vcl/accessibility/AccessibleBrowseBoxTableBase.hxx | 8 - include/vcl/accessibility/AccessibleBrowseBoxTableCell.hxx | 9 - vcl/inc/accessibility/vclxaccessiblelistitem.hxx | 2 vcl/source/accessibility/AccessibleBrowseBox.cxx | 13 -- vcl/source/accessibility/AccessibleBrowseBoxBase.cxx | 39 +----- vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx | 27 +--- vcl/source/accessibility/AccessibleBrowseBoxHeaderCell.cxx | 17 +- vcl/source/accessibility/AccessibleBrowseBoxTableBase.cxx | 7 - vcl/source/accessibility/AccessibleBrowseBoxTableCell.cxx | 11 - vcl/source/accessibility/vclxaccessiblelistitem.cxx | 34 +---- 14 files changed, 55 insertions(+), 203 deletions(-)
New commits: commit f1fdedb2f5d1ab108678c07cdce2a5d692ff1760 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Feb 11 11:21:29 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Feb 12 08:06:57 2025 +0100 listbox a11y: Consistently lock (only) SolarMutex So far, some of the public XAccessible* method implementations were locking only the SolarMutex, some were locking only `m_aMutex` and some were locking both. Unify that to always lock only the SolarMutex in all of those methods. Change-Id: Ia6e7655d47a372d4b70d3c7de8715881b9aaddc5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181428 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/vcl/inc/accessibility/vclxaccessiblelistitem.hxx b/vcl/inc/accessibility/vclxaccessiblelistitem.hxx index b6b1e7e9cc47..271db9613648 100644 --- a/vcl/inc/accessibility/vclxaccessiblelistitem.hxx +++ b/vcl/inc/accessibility/vclxaccessiblelistitem.hxx @@ -75,7 +75,7 @@ private: virtual css::lang::Locale implGetLocale() override; virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex ) override; - OUString getTextRangeImpl(std::unique_lock<std::mutex>& rGuard, sal_Int32 nStartIndex, sal_Int32 nEndIndex); + OUString getTextRangeImpl(sal_Int32 nStartIndex, sal_Int32 nEndIndex); public: /** OAccessibleBase needs a valid view diff --git a/vcl/source/accessibility/vclxaccessiblelistitem.cxx b/vcl/source/accessibility/vclxaccessiblelistitem.cxx index 6465f627a717..4810324f08c3 100644 --- a/vcl/source/accessibility/vclxaccessiblelistitem.cxx +++ b/vcl/source/accessibility/vclxaccessiblelistitem.cxx @@ -201,7 +201,7 @@ Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleChild( sa Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleParent( ) { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; return m_xParent; } @@ -225,7 +225,7 @@ OUString SAL_CALL VCLXAccessibleListItem::getAccessibleDescription( ) OUString SAL_CALL VCLXAccessibleListItem::getAccessibleName( ) { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; // entry text == accessible name return m_sEntryText; @@ -238,7 +238,7 @@ Reference< XAccessibleRelationSet > SAL_CALL VCLXAccessibleListItem::getAccessib sal_Int64 SAL_CALL VCLXAccessibleListItem::getAccessibleStateSet( ) { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; sal_Int64 nStateSet = 0; @@ -271,7 +271,6 @@ sal_Int64 SAL_CALL VCLXAccessibleListItem::getAccessibleStateSet( ) Locale SAL_CALL VCLXAccessibleListItem::getLocale( ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); return implGetLocale(); } @@ -281,7 +280,6 @@ Locale SAL_CALL VCLXAccessibleListItem::getLocale( ) sal_Bool SAL_CALL VCLXAccessibleListItem::containsPoint( const awt::Point& _aPoint ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); bool bInside = false; IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -302,7 +300,6 @@ Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleAtPoint( awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); awt::Rectangle aRect; IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -316,7 +313,6 @@ awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( ) awt::Point SAL_CALL VCLXAccessibleListItem::getLocation( ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); Point aPoint(0,0); IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -331,7 +327,6 @@ awt::Point SAL_CALL VCLXAccessibleListItem::getLocation( ) awt::Point SAL_CALL VCLXAccessibleListItem::getLocationOnScreen( ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); Point aPoint(0,0); IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -347,7 +342,6 @@ awt::Point SAL_CALL VCLXAccessibleListItem::getLocationOnScreen( ) awt::Size SAL_CALL VCLXAccessibleListItem::getSize( ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); Size aSize; IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -372,7 +366,6 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getCaretPosition() sal_Bool SAL_CALL VCLXAccessibleListItem::setCaretPosition( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); if ( !implIsValidRange( nIndex, nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -383,7 +376,6 @@ sal_Bool SAL_CALL VCLXAccessibleListItem::setCaretPosition( sal_Int32 nIndex ) sal_Unicode SAL_CALL VCLXAccessibleListItem::getCharacter( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::implGetCharacter( m_sEntryText, nIndex ); } @@ -391,7 +383,6 @@ sal_Unicode SAL_CALL VCLXAccessibleListItem::getCharacter( sal_Int32 nIndex ) Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< OUString >& ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -402,7 +393,6 @@ Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttribute awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -422,7 +412,7 @@ awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nI sal_Int32 SAL_CALL VCLXAccessibleListItem::getCharacterCount() { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; return m_sEntryText.getLength(); } @@ -430,7 +420,6 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getCharacterCount() sal_Int32 SAL_CALL VCLXAccessibleListItem::getIndexAtPoint( const awt::Point& aPoint ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); sal_Int32 nIndex = -1; IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -464,7 +453,7 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getSelectionEnd() sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; if ( !implIsValidRange( nStartIndex, nEndIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -474,12 +463,12 @@ sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, s OUString SAL_CALL VCLXAccessibleListItem::getText() { - std::unique_lock aGuard( m_aMutex ); + SolarMutexGuard aSolarGuard; return m_sEntryText; } -OUString VCLXAccessibleListItem::getTextRangeImpl(std::unique_lock<std::mutex>& /*rGuard*/, sal_Int32 nStartIndex, sal_Int32 nEndIndex) +OUString VCLXAccessibleListItem::getTextRangeImpl(sal_Int32 nStartIndex, sal_Int32 nEndIndex) { return OCommonAccessibleText::implGetTextRange(m_sEntryText, nStartIndex, nEndIndex); } @@ -487,15 +476,13 @@ OUString VCLXAccessibleListItem::getTextRangeImpl(std::unique_lock<std::mutex>& OUString SAL_CALL VCLXAccessibleListItem::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); - return getTextRangeImpl(aGuard, nStartIndex, nEndIndex); + return getTextRangeImpl(nStartIndex, nEndIndex); } css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType ); } @@ -503,7 +490,6 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType ); } @@ -511,7 +497,6 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIn css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType ); } @@ -519,7 +504,6 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIn sal_Bool SAL_CALL VCLXAccessibleListItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { SolarMutexGuard aSolarGuard; - std::unique_lock aGuard( m_aMutex ); checkIndex_Impl( nStartIndex, m_sEntryText ); checkIndex_Impl( nEndIndex, m_sEntryText ); @@ -531,7 +515,7 @@ sal_Bool SAL_CALL VCLXAccessibleListItem::copyText( sal_Int32 nStartIndex, sal_I Reference< datatransfer::clipboard::XClipboard > xClipboard = pListBoxHelper->GetClipboard(); if ( xClipboard.is() ) { - OUString sText(getTextRangeImpl(aGuard, nStartIndex, nEndIndex)); + OUString sText(getTextRangeImpl(nStartIndex, nEndIndex)); rtl::Reference<vcl::unohelper::TextDataObject> pDataObj = new vcl::unohelper::TextDataObject( sText ); SolarMutexReleaser aReleaser; commit 6af514e29dc14916e8ab63655b0c175928bdfc8c Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Feb 11 09:24:04 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Feb 12 08:06:51 2025 +0100 browsebox a11y: Let base class implement XAccessible By now, all non-abstract subclasses of AccessibleBrowseBoxBase implement the XAccessible interface (Either directly or by subclassing BrowseBoxAccessibleElement) and their XAccessible::getAccessibleContext implementation returns a reference to self. Deduplicate code by letting AccessibleBrowseBoxBase implement the XAccessible interface and dropping the implementations from subclasses. Also drop the now unused BrowseBoxAccessibleElement class. Change-Id: I0cef92acc67f176b55c97bc7ab5ae28b69433b49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181407 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/vcl/accessibility/AccessibleBrowseBox.hxx b/include/vcl/accessibility/AccessibleBrowseBox.hxx index 103b8d57e4ad..a5cd38d23a4d 100644 --- a/include/vcl/accessibility/AccessibleBrowseBox.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBox.hxx @@ -29,8 +29,7 @@ class AccessibleBrowseBoxTable; /** This class represents the complete accessible BrowseBox object. */ -class VCL_DLLPUBLIC AccessibleBrowseBox - : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxBase, css::accessibility::XAccessible> +class VCL_DLLPUBLIC AccessibleBrowseBox : public AccessibleBrowseBoxBase { public: @@ -49,10 +48,6 @@ protected: using AccessibleBrowseBoxBase::disposing; virtual void SAL_CALL disposing() override; - // XAccessible - css::uno::Reference<css::accessibility::XAccessibleContext> - SAL_CALL getAccessibleContext() override; - // XAccessibleContext /** @return The count of visible children. */ diff --git a/include/vcl/accessibility/AccessibleBrowseBoxBase.hxx b/include/vcl/accessibility/AccessibleBrowseBoxBase.hxx index 73043b568f1f..400f78abdc18 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxBase.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxBase.hxx @@ -51,7 +51,8 @@ namespace vcl { implements basic functionality for various Accessibility interfaces. */ class VCL_DLLPUBLIC AccessibleBrowseBoxBase : public cppu::ImplInheritanceHelper<comphelper::OAccessibleComponentHelper, - css::awt::XFocusListener, css::lang::XServiceInfo> + css::accessibility::XAccessible, css::awt::XFocusListener, + css::lang::XServiceInfo> { public: /** Constructor sets specified name and description. If the constant of a @@ -95,8 +96,11 @@ protected: virtual css::awt::Rectangle implGetBounds() override; public: - // XAccessibleContext + // XAccessible + css::uno::Reference<css::accessibility::XAccessibleContext> + SAL_CALL getAccessibleContext() override; + // XAccessibleContext /** @return A reference to the parent accessible object. */ virtual css::uno::Reference<css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override; @@ -248,62 +252,6 @@ private: AccessibleBrowseBoxObjType meObjType; }; - -// a version of AccessibleBrowseBoxBase which implements not only the XAccessibleContext, -// but also the XAccessible - -typedef cppu::ImplInheritanceHelper<AccessibleBrowseBoxBase, css::accessibility::XAccessible> - BrowseBoxAccessibleElement_Base; - -class BrowseBoxAccessibleElement : public BrowseBoxAccessibleElement_Base -{ -protected: - /** Constructor sets specified name and description. If the constant of a - text is BBTEXT_NONE, the derived class has to set the text via - implSetName() (in Ctor) or later via - setAccessibleName() and setAccessibleDescription() (these methods - notify the listeners about the change). - - @param rxParent XAccessible interface of the parent object. - @param rBrowseBox The BrowseBox control. - @param eObjType Object type - */ - BrowseBoxAccessibleElement( - const css::uno::Reference< css::accessibility::XAccessible >& rxParent, - ::vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType ); - - /** Constructor sets specified name and description. - - @param rxParent XAccessible interface of the parent object. - @param rBrowseBox The BrowseBox control. - @param eObjType Object type - @param rName The name of this object. - @param rDescription The description text of this object. - */ - BrowseBoxAccessibleElement( - const css::uno::Reference< css::accessibility::XAccessible >& rxParent, - ::vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType, - const OUString& rName, - const OUString& rDescription ); - -public: - // noncopyable - BrowseBoxAccessibleElement(const BrowseBoxAccessibleElement&) = delete; - const BrowseBoxAccessibleElement& operator=(const BrowseBoxAccessibleElement&) = delete; - -protected: - virtual ~BrowseBoxAccessibleElement() override; - -protected: - // XAccessible - - /** @return The XAccessibleContext interface of this object. */ - virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override; -}; - - // a helper class for protecting methods which need to lock the solar mutex in addition to the own mutex class SolarMethodGuard : public SolarMutexGuard, public osl::MutexGuard diff --git a/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx b/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx index f16ab3fd544f..e617c09ab85a 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx @@ -24,7 +24,7 @@ #include <vcl/accessibility/AccessibleBrowseBoxCell.hxx> class VCL_DLLPUBLIC AccessibleCheckBoxCell final - : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxCell, css::accessibility::XAccessible, + : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxCell, css::accessibility::XAccessibleValue> { private: @@ -43,9 +43,6 @@ public: const TriState& _eState, bool _bIsTriState); - // XAccessible - virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; - // XAccessibleContext virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override; virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override; diff --git a/include/vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx b/include/vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx index e8facbaf225b..9921632142b2 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxHeaderCell.hxx @@ -20,7 +20,7 @@ #include <vcl/accessibility/AccessibleBrowseBoxBase.hxx> -class VCL_DLLPUBLIC AccessibleBrowseBoxHeaderCell final : public BrowseBoxAccessibleElement +class VCL_DLLPUBLIC AccessibleBrowseBoxHeaderCell final : public AccessibleBrowseBoxBase { sal_Int32 m_nColumnRowId; public: diff --git a/include/vcl/accessibility/AccessibleBrowseBoxTableBase.hxx b/include/vcl/accessibility/AccessibleBrowseBoxTableBase.hxx index 54ca361e8ea6..15ed947e31cf 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxTableBase.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxTableBase.hxx @@ -24,15 +24,13 @@ #include <com/sun/star/accessibility/XAccessibleTable.hpp> #include <vcl/accessibility/AccessibleBrowseBoxBase.hxx> - -typedef cppu::ImplInheritanceHelper<BrowseBoxAccessibleElement, css::accessibility::XAccessibleTable> - AccessibleBrowseBoxTableImplHelper; - /** The BrowseBox accessible table objects inherit from this base class. It implements basic functionality for the XAccessibleTable interface. BrowseBox table objects are: the data table, the column header bar and the row header bar. */ -class AccessibleBrowseBoxTableBase : public AccessibleBrowseBoxTableImplHelper +class AccessibleBrowseBoxTableBase + : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxBase, + css::accessibility::XAccessibleTable> { public: /** Constructor sets specified name and description. If the constant of a diff --git a/include/vcl/accessibility/AccessibleBrowseBoxTableCell.hxx b/include/vcl/accessibility/AccessibleBrowseBoxTableCell.hxx index 84dc81530b47..17a82782624d 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxTableCell.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxTableCell.hxx @@ -26,8 +26,7 @@ // implementation of a table cell of BrowseBox class VCL_DLLPUBLIC AccessibleBrowseBoxTableCell final : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxCell, - css::accessibility::XAccessibleText, - css::accessibility::XAccessible>, + css::accessibility::XAccessibleText>, public ::comphelper::OCommonAccessibleText { private: @@ -69,12 +68,6 @@ public: */ sal_Int64 implCreateStateSet() override; - // XAccessible ------------------------------------------------------------ - - /** @return The XAccessibleContext interface of this object. */ - virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL - getAccessibleContext() override; - // XAccessibleText virtual sal_Int32 SAL_CALL getCaretPosition() override; virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) override; diff --git a/vcl/source/accessibility/AccessibleBrowseBox.cxx b/vcl/source/accessibility/AccessibleBrowseBox.cxx index 468236e00cb7..34a030130476 100644 --- a/vcl/source/accessibility/AccessibleBrowseBox.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBox.cxx @@ -38,7 +38,8 @@ using namespace ::com::sun::star::accessibility; AccessibleBrowseBox::AccessibleBrowseBox( const css::uno::Reference<css::accessibility::XAccessible>& _rxParent, ::vcl::IAccessibleTableProvider& _rBrowseBox) - : ImplInheritanceHelper(_rxParent, _rBrowseBox, nullptr, AccessibleBrowseBoxObjType::BrowseBox) + : AccessibleBrowseBoxBase(_rxParent, _rBrowseBox, nullptr, + AccessibleBrowseBoxObjType::BrowseBox) { m_xFocusWindow.set(mpBrowseBox->GetWindowInstance()->GetComponentInterface(), css::uno::UNO_QUERY); } @@ -71,16 +72,6 @@ void SAL_CALL AccessibleBrowseBox::disposing() AccessibleBrowseBoxBase::disposing(); } -// css::accessibility::XAccessible - -Reference<css::accessibility::XAccessibleContext> - SAL_CALL AccessibleBrowseBox::getAccessibleContext() -{ - osl::MutexGuard aGuard(getMutex()); - ensureIsAlive(); - return this; -} - // css::accessibility::XAccessibleContext sal_Int64 SAL_CALL AccessibleBrowseBox::getAccessibleChildCount() diff --git a/vcl/source/accessibility/AccessibleBrowseBoxBase.cxx b/vcl/source/accessibility/AccessibleBrowseBoxBase.cxx index 56cfc815b076..d1d758d6950a 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxBase.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxBase.cxx @@ -95,6 +95,16 @@ css::awt::Rectangle AccessibleBrowseBoxBase::implGetBounds() return vcl::unohelper::ConvertToAWTRect(implGetBoundingBox()); } +// css::accessibility::XAccessible + +Reference<css::accessibility::XAccessibleContext> + SAL_CALL AccessibleBrowseBoxBase::getAccessibleContext() +{ + osl::MutexGuard aGuard(getMutex()); + ensureIsAlive(); + return this; +} + // css::accessibility::XAccessibleContext Reference< css::accessibility::XAccessible > SAL_CALL AccessibleBrowseBoxBase::getAccessibleParent() @@ -394,33 +404,4 @@ sal_Int32 SAL_CALL AccessibleBrowseBoxBase::getBackground( ) return sal_Int32(nColor); } - -// css::accessibility::XAccessible - -Reference< css::accessibility::XAccessibleContext > SAL_CALL BrowseBoxAccessibleElement::getAccessibleContext() -{ - osl::MutexGuard aGuard( getMutex() ); - ensureIsAlive(); - return this; -} - - -BrowseBoxAccessibleElement::BrowseBoxAccessibleElement( const css::uno::Reference< css::accessibility::XAccessible >& rxParent, ::vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType ) - : BrowseBoxAccessibleElement_Base(rxParent, rBrowseBox, nullptr, eObjType) -{ -} - - -BrowseBoxAccessibleElement::BrowseBoxAccessibleElement( const css::uno::Reference< css::accessibility::XAccessible >& rxParent, ::vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType, const OUString& rName, const OUString& rDescription ) - : BrowseBoxAccessibleElement_Base(rxParent, rBrowseBox, nullptr, eObjType, rName, rDescription) -{ -} - - -BrowseBoxAccessibleElement::~BrowseBoxAccessibleElement( ) -{ -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx b/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx index 7ffd8d06be9b..98a0dedcb180 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx @@ -37,13 +37,6 @@ AccessibleCheckBoxCell::AccessibleCheckBoxCell(const Reference<XAccessible>& _rx { } -Reference< XAccessibleContext > SAL_CALL AccessibleCheckBoxCell::getAccessibleContext( ) -{ - osl::MutexGuard aGuard( getMutex() ); - ensureIsAlive(); - return this; -} - sal_Int64 AccessibleCheckBoxCell::implCreateStateSet() { sal_Int64 nStateSet = AccessibleBrowseBoxCell::implCreateStateSet(); diff --git a/vcl/source/accessibility/AccessibleBrowseBoxHeaderCell.cxx b/vcl/source/accessibility/AccessibleBrowseBoxHeaderCell.cxx index 9100c5b61736..46bc2ae8a7f6 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxHeaderCell.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxHeaderCell.cxx @@ -27,16 +27,13 @@ using namespace ::com::sun::star::accessibility; using namespace ::com::sun::star::lang; using namespace ::com::sun::star::uno; -AccessibleBrowseBoxHeaderCell::AccessibleBrowseBoxHeaderCell(sal_Int32 _nColumnRowId, - const Reference< XAccessible >& rxParent, - vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType) -: BrowseBoxAccessibleElement(rxParent, - rBrowseBox, - eObjType, - rBrowseBox.GetAccessibleObjectName( eObjType ,_nColumnRowId), - rBrowseBox.GetAccessibleObjectDescription( eObjType ,_nColumnRowId)) -, m_nColumnRowId(_nColumnRowId) +AccessibleBrowseBoxHeaderCell::AccessibleBrowseBoxHeaderCell( + sal_Int32 _nColumnRowId, const Reference<XAccessible>& rxParent, + vcl::IAccessibleTableProvider& rBrowseBox, AccessibleBrowseBoxObjType eObjType) + : AccessibleBrowseBoxBase(rxParent, rBrowseBox, nullptr, eObjType, + rBrowseBox.GetAccessibleObjectName(eObjType, _nColumnRowId), + rBrowseBox.GetAccessibleObjectDescription(eObjType, _nColumnRowId)) + , m_nColumnRowId(_nColumnRowId) { } /** Return a bitset of states of the current object. diff --git a/vcl/source/accessibility/AccessibleBrowseBoxTableBase.cxx b/vcl/source/accessibility/AccessibleBrowseBoxTableBase.cxx index 69678547756a..43e1372f212a 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxTableBase.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxTableBase.cxx @@ -35,10 +35,9 @@ using namespace ::com::sun::star::accessibility; // Ctor/Dtor/disposing -------------------------------------------------------- AccessibleBrowseBoxTableBase::AccessibleBrowseBoxTableBase( - const Reference< XAccessible >& rxParent, - vcl::IAccessibleTableProvider& rBrowseBox, - AccessibleBrowseBoxObjType eObjType ) : - AccessibleBrowseBoxTableImplHelper(rxParent, rBrowseBox, eObjType) + const Reference<XAccessible>& rxParent, vcl::IAccessibleTableProvider& rBrowseBox, + AccessibleBrowseBoxObjType eObjType) + : ImplInheritanceHelper(rxParent, rBrowseBox, nullptr, eObjType) { } diff --git a/vcl/source/accessibility/AccessibleBrowseBoxTableCell.cxx b/vcl/source/accessibility/AccessibleBrowseBoxTableCell.cxx index b477224c99c3..cb39bb28217a 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxTableCell.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxTableCell.cxx @@ -150,17 +150,6 @@ sal_Int64 AccessibleBrowseBoxTableCell::implCreateStateSet() return nStateSet; } - -// XAccessible ------------------------------------------------------------ - -/** @return The XAccessibleContext interface of this object. */ -Reference< XAccessibleContext > SAL_CALL AccessibleBrowseBoxTableCell::getAccessibleContext() -{ - osl::MutexGuard aGuard( getMutex() ); - ensureIsAlive(); - return this; -} - // XAccessibleContext ----------------------------------------------------- sal_Int64 SAL_CALL AccessibleBrowseBoxTableCell::getAccessibleIndexInParent() commit b3cd6017f370e5cc2ab4ce4f0537127b2951702b Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Feb 11 09:17:05 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Feb 12 08:06:45 2025 +0100 browsebox a11y: Use cppu:ImplInheritanceHelper Change-Id: Iae300fb7b6472397706f64526c36ce228c1b33ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181406 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx b/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx index d07a2f3edc42..f16ab3fd544f 100644 --- a/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx +++ b/include/vcl/accessibility/AccessibleBrowseBoxCheckBoxCell.hxx @@ -23,13 +23,9 @@ #include <cppuhelper/implbase2.hxx> #include <vcl/accessibility/AccessibleBrowseBoxCell.hxx> - -typedef ::cppu::ImplHelper2 < css::accessibility::XAccessible, - css::accessibility::XAccessibleValue - > AccessibleCheckBoxCell_BASE; - -class VCL_DLLPUBLIC AccessibleCheckBoxCell final : public AccessibleBrowseBoxCell, - public AccessibleCheckBoxCell_BASE +class VCL_DLLPUBLIC AccessibleCheckBoxCell final + : public cppu::ImplInheritanceHelper<AccessibleBrowseBoxCell, css::accessibility::XAccessible, + css::accessibility::XAccessibleValue> { private: TriState m_eState; @@ -47,11 +43,6 @@ public: const TriState& _eState, bool _bIsTriState); - // XInterface - DECLARE_XINTERFACE( ) - // XTypeProvider - DECLARE_XTYPEPROVIDER( ) - // XAccessible virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; diff --git a/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx b/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx index 2adbec477dae..7ffd8d06be9b 100644 --- a/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx +++ b/vcl/source/accessibility/AccessibleBrowseBoxCheckBoxCell.cxx @@ -26,20 +26,16 @@ using namespace com::sun::star::accessibility; using namespace com::sun::star::uno; -AccessibleCheckBoxCell::AccessibleCheckBoxCell(const Reference<XAccessible >& _rxParent, - vcl::IAccessibleTableProvider& _rBrowseBox, - sal_Int32 _nRowPos, - sal_uInt16 _nColPos - ,const TriState& _eState, - bool _bIsTriState) - :AccessibleBrowseBoxCell(_rxParent, _rBrowseBox, nullptr, _nRowPos, _nColPos, AccessibleBrowseBoxObjType::CheckBoxCell) - ,m_eState(_eState) - ,m_bIsTriState(_bIsTriState) +AccessibleCheckBoxCell::AccessibleCheckBoxCell(const Reference<XAccessible>& _rxParent, + vcl::IAccessibleTableProvider& _rBrowseBox, + sal_Int32 _nRowPos, sal_uInt16 _nColPos, + const TriState& _eState, bool _bIsTriState) + : ImplInheritanceHelper(_rxParent, _rBrowseBox, nullptr, _nRowPos, _nColPos, + AccessibleBrowseBoxObjType::CheckBoxCell) + , m_eState(_eState) + , m_bIsTriState(_bIsTriState) { } -IMPLEMENT_FORWARD_XINTERFACE2( AccessibleCheckBoxCell, AccessibleBrowseBoxCell, AccessibleCheckBoxCell_BASE ) - -IMPLEMENT_FORWARD_XTYPEPROVIDER2( AccessibleCheckBoxCell, AccessibleBrowseBoxCell, AccessibleCheckBoxCell_BASE ) Reference< XAccessibleContext > SAL_CALL AccessibleCheckBoxCell::getAccessibleContext( ) {