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>

Reply via email to