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(  )
 {

Reply via email to