toolkit/inc/controls/table/AccessibleGridControl.hxx              |    8 
 toolkit/inc/controls/table/AccessibleGridControlBase.hxx          |   43 ---
 toolkit/inc/controls/table/AccessibleGridControlHeaderCell.hxx    |    9 
 toolkit/inc/controls/table/AccessibleGridControlTableBase.hxx     |    2 
 toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx     |   10 
 toolkit/source/controls/table/AccessibleGridControl.cxx           |   10 
 toolkit/source/controls/table/AccessibleGridControlBase.cxx       |   33 --
 toolkit/source/controls/table/AccessibleGridControlHeaderCell.cxx |   10 
 toolkit/source/controls/table/AccessibleGridControlTableCell.cxx  |   12 
 toolkit/source/controls/table/tablecontrol.cxx                    |    6 
 vcl/inc/accessibility/accessiblelistboxentry.hxx                  |   32 --
 vcl/source/accessibility/accessiblelistboxentry.cxx               |  122 
----------
 12 files changed, 35 insertions(+), 262 deletions(-)

New commits:
commit 735b2109f0cfb7f8f5fe2188a8e3ed6a71aa123d
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Jan 28 12:40:14 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Wed Jan 29 08:26:19 2025 +0100

    a11y: Use OAccessibleComponentHelper for AccessibleListBoxEntry
    
    Similar to how
    
        commit 7107db3fe773629cc511eb5922bc9c28c9c5c60a
        Author: Michael Weghorn <[email protected]>
        Date:   Fri Jan 24 18:57:58 2025 +0100
    
            toolkit a11y: Use OAccessibleComponentHelper for grid control
    
    did for AccessibleGridControlBase, also derive
    from OAccessibleComponentHelper for AccessibleListBoxEntry,
    to make use of the logic already implemented there
    instead of having to implement all the XAccessibleComponent
    and XAccessibleEventBroadcaster methods  manually
    
    AccessibleListBoxEntry::GetBoundingBox_Impl already
    provides what is needed to implement
    AccessibleListBoxEntry::implGetBounds, just needs
    to convert to awt::Rectangle.
    
    Drop all of the other overrides that are no longer
    needed as the implementation is now provided by
    the OAccessibleComponentHelper base class.
    
    No change in behavior intended or observed when
    testing this with Accerciser and Orca and the qt6
    VCL plugin with the "Tools" -> "AutoText" dialog
    in Writer, where this code path is used for
    items in the treeview.
    
    Change-Id: I5c95bc6135db92a6e9d736a134af2cbcc35a5e06
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180840
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/inc/accessibility/accessiblelistboxentry.hxx 
b/vcl/inc/accessibility/accessiblelistboxentry.hxx
index 050dc948d9c4..9330c4da2e84 100644
--- a/vcl/inc/accessibility/accessiblelistboxentry.hxx
+++ b/vcl/inc/accessibility/accessiblelistboxentry.hxx
@@ -54,10 +54,8 @@ namespace accessibility
     class AccessibleListBox;
 
 // class AccessibleListBoxEntry ------------------------------------------
-    typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible
-                                                , 
css::accessibility::XAccessibleContext
-                                                , 
css::accessibility::XAccessibleComponent
-                                                , 
css::accessibility::XAccessibleEventBroadcaster
+    typedef cppu::ImplInheritanceHelper<comphelper::OAccessibleComponentHelper
+                                                , 
css::accessibility::XAccessible
                                                 , 
css::accessibility::XAccessibleAction
                                                 , 
css::accessibility::XAccessibleSelection
                                                 , 
css::accessibility::XAccessibleText
@@ -65,8 +63,7 @@ namespace accessibility
                                                 , css::lang::XServiceInfo > 
AccessibleListBoxEntry_BASE;
 
     /** the class AccessibleListBoxEntry represents the class for an 
accessible object of a listbox entry */
-    class AccessibleListBoxEntry final : public ::cppu::BaseMutex
-                                        ,public AccessibleListBoxEntry_BASE
+    class AccessibleListBoxEntry final : public AccessibleListBoxEntry_BASE
                                         ,public 
::comphelper::OCommonAccessibleText
     {
     friend class AccessibleListBox;
@@ -77,32 +74,20 @@ namespace accessibility
         std::deque< sal_Int32 >           m_aEntryPath;
         SvTreeListEntry*                    m_pSvLBoxEntry; // Needed for a11y 
focused item...
 
-
-        /// client id in the AccessibleEventNotifier queue
-        sal_uInt32                          m_nClientId;
-
         unotools::WeakReference<AccessibleListBox> m_wListBox;
 
         tools::Rectangle               GetBoundingBox_Impl() const;
-        tools::Rectangle               GetBoundingBoxOnScreen_Impl() const;
         bool                IsAlive_Impl() const;
         bool                IsShowing_Impl() const;
 
         /// @throws css::lang::DisposedException
         /// @throws css::uno::RuntimeException
         tools::Rectangle               GetBoundingBox();
-        /// @throws css::lang::DisposedException
-        /// @throws css::uno::RuntimeException
-        tools::Rectangle               GetBoundingBoxOnScreen();
         /// @throws css::lang::IndexOutOfBoundsException
         void CheckActionIndex(sal_Int32 nIndex);
         /// @throws css::lang::DisposedException
         void                    EnsureIsAlive() const;
 
-        void                    NotifyAccessibleEvent( sal_Int16 _nEventId, 
const css::uno::Any& _aOldValue, const css::uno::Any& _aNewValue );
-
-        virtual ~AccessibleListBoxEntry() override;
-
         /** this function is called upon disposing the component
         */
         virtual void SAL_CALL   disposing() override;
@@ -129,6 +114,8 @@ namespace accessibility
 
         SvTreeListEntry* GetSvLBoxEntry() const { return m_pSvLBoxEntry; }
 
+    protected:
+        virtual css::awt::Rectangle implGetBounds() override;
 
     private:
         // XTypeProvider
@@ -155,12 +142,7 @@ namespace accessibility
         virtual css::lang::Locale SAL_CALL getLocale(  ) override;
 
         // XAccessibleComponent
-        virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint 
) override;
         virtual css::uno::Reference< css::accessibility::XAccessible > 
SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override;
-        virtual css::awt::Rectangle SAL_CALL getBounds(  ) override;
-        virtual css::awt::Point SAL_CALL getLocation(  ) override;
-        virtual css::awt::Point SAL_CALL getLocationOnScreen(  ) override;
-        virtual css::awt::Size SAL_CALL getSize(  ) override;
         virtual void SAL_CALL grabFocus(  ) override;
         virtual sal_Int32 SAL_CALL getForeground(  ) override;
         virtual sal_Int32 SAL_CALL getBackground(  ) override;
@@ -185,10 +167,6 @@ namespace accessibility
         virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 
nEndIndex ) override;
         virtual sal_Bool SAL_CALL scrollSubstringTo( sal_Int32 nStartIndex, 
sal_Int32 nEndIndex, css::accessibility::AccessibleScrollType aScrollType) 
override;
 
-        // XAccessibleEventBroadcaster
-        virtual void SAL_CALL addAccessibleEventListener( const 
css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener 
) override;
-        virtual void SAL_CALL removeAccessibleEventListener( const 
css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener 
) override;
-
         // XAccessibleAction
         virtual sal_Int32 SAL_CALL getAccessibleActionCount(  ) override;
         virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) 
override;
diff --git a/vcl/source/accessibility/accessiblelistboxentry.cxx 
b/vcl/source/accessibility/accessiblelistboxentry.cxx
index 25ba2632137d..e6b690026635 100644
--- a/vcl/source/accessibility/accessiblelistboxentry.cxx
+++ b/vcl/source/accessibility/accessiblelistboxentry.cxx
@@ -55,27 +55,16 @@ namespace accessibility
     AccessibleListBoxEntry::AccessibleListBoxEntry( SvTreeListBox& _rListBox,
                                                     SvTreeListEntry& rEntry,
                                                     AccessibleListBox & 
rListBox)
-        : AccessibleListBoxEntry_BASE( m_aMutex )
+        : AccessibleListBoxEntry_BASE()
 
         , m_pTreeListBox( &_rListBox )
         , m_pSvLBoxEntry(&rEntry)
-        , m_nClientId( 0 )
         , m_wListBox(&rListBox)
     {
         m_pTreeListBox->AddEventListener( LINK( this, AccessibleListBoxEntry, 
WindowEventListener ) );
         _rListBox.FillEntryPath( m_pSvLBoxEntry, m_aEntryPath );
     }
 
-    AccessibleListBoxEntry::~AccessibleListBoxEntry()
-    {
-        if ( IsAlive_Impl() )
-        {
-            // increment ref count to prevent double call of Dtor
-            osl_atomic_increment( &m_refCount );
-            dispose();
-        }
-    }
-
     IMPL_LINK( AccessibleListBoxEntry, WindowEventListener, VclWindowEvent&, 
rEvent, void )
     {
         OSL_ENSURE( rEvent.GetWindow() , 
"AccessibleListBoxEntry::WindowEventListener: no event window!" );
@@ -114,18 +103,6 @@ namespace accessibility
         }
     }
 
-    void AccessibleListBoxEntry::NotifyAccessibleEvent( sal_Int16 _nEventId,
-                                                   const css::uno::Any& 
_aOldValue,
-                                                   const css::uno::Any& 
_aNewValue )
-    {
-        Reference< uno::XInterface > xSource( *this );
-        AccessibleEventObject aEventObj( xSource, _nEventId, _aNewValue, 
_aOldValue, -1 );
-
-        if (m_nClientId)
-            comphelper::AccessibleEventNotifier::addEvent( m_nClientId, 
aEventObj );
-    }
-
-
     tools::Rectangle AccessibleListBoxEntry::GetBoundingBox_Impl() const
     {
         tools::Rectangle aRect;
@@ -146,21 +123,6 @@ namespace accessibility
         return aRect;
     }
 
-    tools::Rectangle AccessibleListBoxEntry::GetBoundingBoxOnScreen_Impl() 
const
-    {
-        tools::Rectangle aRect;
-        SvTreeListEntry* pEntry = m_pTreeListBox->GetEntryFromPath( 
m_aEntryPath );
-        if ( pEntry )
-        {
-            aRect = m_pTreeListBox->GetBoundingRect( pEntry );
-            Point aTopLeft = aRect.TopLeft();
-            aTopLeft += 
Point(m_pTreeListBox->GetWindowExtentsAbsolute().TopLeft());
-            aRect = tools::Rectangle( aTopLeft, aRect.GetSize() );
-        }
-
-        return aRect;
-    }
-
     bool AccessibleListBoxEntry::IsAlive_Impl() const
     {
         return !rBHelper.bDisposed && !rBHelper.bInDispose && (m_pTreeListBox 
!= nullptr);
@@ -193,15 +155,6 @@ namespace accessibility
         return GetBoundingBox_Impl();
     }
 
-    tools::Rectangle AccessibleListBoxEntry::GetBoundingBoxOnScreen()
-    {
-        SolarMutexGuard aSolarGuard;
-        ::osl::MutexGuard aGuard( m_aMutex );
-
-        EnsureIsAlive();
-        return GetBoundingBoxOnScreen_Impl();
-    }
-
     void AccessibleListBoxEntry::CheckActionIndex(sal_Int32 nIndex)
     {
         if (nIndex < 0 || nIndex >= getAccessibleActionCount())
@@ -232,6 +185,11 @@ namespace accessibility
         nEndIndex = 0;
     }
 
+    css::awt::Rectangle AccessibleListBoxEntry::implGetBounds()
+    {
+        return vcl::unohelper::ConvertToAWTRect(GetBoundingBox_Impl());
+    }
+
     // XTypeProvider
     Sequence< sal_Int8 > AccessibleListBoxEntry::getImplementationId()
     {
@@ -248,13 +206,7 @@ namespace accessibility
 
         Reference< XAccessible > xKeepAlive( this );
 
-        // Send a disposing to all listeners.
-        if ( m_nClientId )
-        {
-            ::comphelper::AccessibleEventNotifier::TClientId nId = m_nClientId;
-            m_nClientId =  0;
-            
::comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this 
);
-        }
+        OAccessibleComponentHelper::disposing();
 
         // clean up
         m_wListBox.clear();
@@ -520,12 +472,6 @@ namespace accessibility
 
     // XAccessibleComponent
 
-    sal_Bool SAL_CALL AccessibleListBoxEntry::containsPoint( const awt::Point& 
rPoint )
-    {
-        return tools::Rectangle(Point(), GetBoundingBox().GetSize())
-            .Contains(vcl::unohelper::ConvertToVCLPoint(rPoint));
-    }
-
     Reference< XAccessible > SAL_CALL 
AccessibleListBoxEntry::getAccessibleAtPoint( const awt::Point& _aPoint )
     {
         SolarMutexGuard aSolarGuard;
@@ -547,26 +493,6 @@ namespace accessibility
         return xAcc;
     }
 
-    awt::Rectangle SAL_CALL AccessibleListBoxEntry::getBounds(  )
-    {
-        return vcl::unohelper::ConvertToAWTRect(GetBoundingBox());
-    }
-
-    awt::Point SAL_CALL AccessibleListBoxEntry::getLocation(  )
-    {
-        return vcl::unohelper::ConvertToAWTPoint(GetBoundingBox().TopLeft());
-    }
-
-    awt::Point SAL_CALL AccessibleListBoxEntry::getLocationOnScreen(  )
-    {
-        return 
vcl::unohelper::ConvertToAWTPoint(GetBoundingBoxOnScreen().TopLeft());
-    }
-
-    awt::Size SAL_CALL AccessibleListBoxEntry::getSize(  )
-    {
-        return vcl::unohelper::ConvertToAWTSize(GetBoundingBox().GetSize());
-    }
-
     void SAL_CALL AccessibleListBoxEntry::grabFocus(  )
     {
         // do nothing, because no focus for each item
@@ -682,40 +608,6 @@ namespace accessibility
         return false;
     }
 
-    // XAccessibleEventBroadcaster
-
-    void SAL_CALL AccessibleListBoxEntry::addAccessibleEventListener( const 
Reference< XAccessibleEventListener >& xListener )
-    {
-        if (xListener.is())
-        {
-            ::osl::MutexGuard aGuard( m_aMutex );
-            if (!m_nClientId)
-                m_nClientId = 
comphelper::AccessibleEventNotifier::registerClient( );
-            comphelper::AccessibleEventNotifier::addEventListener( 
m_nClientId, xListener );
-        }
-    }
-
-    void SAL_CALL AccessibleListBoxEntry::removeAccessibleEventListener( const 
Reference< XAccessibleEventListener >& xListener )
-    {
-        if (!xListener.is())
-            return;
-
-        ::osl::MutexGuard aGuard( m_aMutex );
-
-        sal_Int32 nListenerCount = 
comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, 
xListener );
-        if ( !nListenerCount )
-        {
-            // no listeners anymore
-            // -> revoke ourself. This may lead to the notifier thread dying 
(if we were the last client),
-            // and at least to us not firing any events anymore, in case 
somebody calls
-            // NotifyAccessibleEvent, again
-            sal_Int32 nId = m_nClientId;
-            m_nClientId = 0;
-            comphelper::AccessibleEventNotifier::revokeClient( nId );
-
-        }
-    }
-
     // XAccessibleAction
 
     sal_Int32 SAL_CALL AccessibleListBoxEntry::getAccessibleActionCount(  )
commit cc8d33cb4da053e4f7738ddf42660e60c0965e79
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Jan 28 11:11:14 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Wed Jan 29 08:26:12 2025 +0100

    uno grid a11y: Deduplicate 2 cases doing the same
    
    Change-Id: I293213079fede1444f3d5e9f0bce5d03d30a9253
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180839
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/toolkit/source/controls/table/tablecontrol.cxx 
b/toolkit/source/controls/table/tablecontrol.cxx
index 9ea268764edf..b3582a846d50 100644
--- a/toolkit/source/controls/table/tablecontrol.cxx
+++ b/toolkit/source/controls/table/tablecontrol.cxx
@@ -456,12 +456,8 @@ namespace svt::table
                     rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
                 break;
 
-            case AccessibleTableControlObjType::ROWHEADERBAR:
-                rStateSet |= AccessibleStateType::VISIBLE;
-                rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
-                break;
-
             case AccessibleTableControlObjType::COLUMNHEADERBAR:
+            case AccessibleTableControlObjType::ROWHEADERBAR:
                 rStateSet |= AccessibleStateType::VISIBLE;
                 rStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
                 break;
commit 87ee0883b67b09ed857096d9d6dc069834efc2da
Author:     Michael Weghorn <[email protected]>
AuthorDate: Tue Jan 28 11:09:06 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Wed Jan 29 08:26:06 2025 +0100

    uno grid a11y: Unify XAccessible implementation in base class
    
    By now, all AccessibleGridControlBase subclasses implement
    both, the XAccessible and XAccessibleContext interfaces,
    and their XAccessible::getAccessibleContext implementations
    return a reference to self.
    
    This is implemented in different ways: Either implementing
    it directly or using the GridControlAccessibleElement
    class that does it as base class.
    
    Unify and simplify this by letting AccessibleGridControlBase
    implement the XAccessible interface, and dropping the extra
    handling in all subclasses.
    
    (Other than the other implementations,
    AccessibleGridControlHeaderCell::getAccessibleContext
    was previously not using SolarMutexGuard, but I can't
    see a particular reason, so don't see a reason to
    override the new base class implementation.)
    
    Change-Id: Ibdb674c5d5556fcf1c5644a2f6d961985b0e3362
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180838
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/toolkit/inc/controls/table/AccessibleGridControl.hxx 
b/toolkit/inc/controls/table/AccessibleGridControl.hxx
index 8d7b8133eb5a..47bbd611e0f0 100644
--- a/toolkit/inc/controls/table/AccessibleGridControl.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControl.hxx
@@ -32,9 +32,7 @@ namespace accessibility {
 
 
 /** This class represents the complete accessible Grid Control object. */
-    class AccessibleGridControl final
-        : public cppu::ImplInheritanceHelper<AccessibleGridControlBase,
-                                             css::accessibility::XAccessible>
+    class AccessibleGridControl final : public AccessibleGridControlBase
 {
     virtual ~AccessibleGridControl() override = default;
 
@@ -42,10 +40,6 @@ namespace accessibility {
     using AccessibleGridControlBase::disposing;
     virtual void SAL_CALL disposing() override;
 
-    // XAccessible
-    virtual css::uno::Reference<css::accessibility::XAccessibleContext>
-        SAL_CALL getAccessibleContext() override;
-
     // XAccessibleContext -----------------------------------------------------
 
     /** @return  The count of visible children. */
diff --git a/toolkit/inc/controls/table/AccessibleGridControlBase.hxx 
b/toolkit/inc/controls/table/AccessibleGridControlBase.hxx
index 0b3532ec3dda..f2f7a2785f84 100644
--- a/toolkit/inc/controls/table/AccessibleGridControlBase.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControlBase.hxx
@@ -47,7 +47,7 @@ namespace accessibility {
     implements basic functionality. */
 class AccessibleGridControlBase
     : public 
cppu::ImplInheritanceHelper<comphelper::OAccessibleComponentHelper,
-                                         css::lang::XServiceInfo>
+                                         css::accessibility::XAccessible, 
css::lang::XServiceInfo>
 {
 public:
     /** Constructor.
@@ -64,6 +64,11 @@ protected:
     virtual void SAL_CALL disposing() override;
 
 public:
+    // XAccessible
+    /** @return  The XAccessibleContext interface of this object. */
+    virtual css::uno::Reference<css::accessibility::XAccessibleContext> 
SAL_CALL
+    getAccessibleContext() override;
+
     // XAccessibleContext
 
     /** @return  A reference to the parent accessible object. */
@@ -186,42 +191,6 @@ protected:
     AccessibleTableControlObjType m_eObjType;
 };
 
-
-// a version of AccessibleGridControlBase which implements not only the 
XAccessibleContext,
-// but also the XAccessible
-
-typedef cppu::ImplInheritanceHelper <AccessibleGridControlBase, 
css::accessibility::XAccessible>
-                                GridControlAccessibleElement_Base;
-
-class GridControlAccessibleElement : public GridControlAccessibleElement_Base
-{
-protected:
-    /** Constructor sets specified name and description.
-
-        @param rxParent    XAccessible interface of the parent object.
-        @param rTable      The Table control.
-        @param eObjType    Type of table control
-    */
-    GridControlAccessibleElement(
-        const css::uno::Reference< css::accessibility::XAccessible >& rxParent,
-        svt::table::TableControl& rTable,
-        AccessibleTableControlObjType  eObjType );
-
-protected:
-    virtual ~GridControlAccessibleElement() override;
-
-protected:
-    // XAccessible
-
-    /** @return  The XAccessibleContext interface of this object. */
-    virtual css::uno::Reference< css::accessibility::XAccessibleContext > 
SAL_CALL
-    getAccessibleContext() override;
-
-private:
-    GridControlAccessibleElement( const GridControlAccessibleElement& ) = 
delete;
-    GridControlAccessibleElement& operator=( const 
GridControlAccessibleElement& ) = delete;
-};
-
 // inlines
 
 inline AccessibleTableControlObjType AccessibleGridControlBase::getType() const
diff --git a/toolkit/inc/controls/table/AccessibleGridControlHeaderCell.hxx 
b/toolkit/inc/controls/table/AccessibleGridControlHeaderCell.hxx
index b7b406f19c68..25e6c3dd06ca 100644
--- a/toolkit/inc/controls/table/AccessibleGridControlHeaderCell.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControlHeaderCell.hxx
@@ -23,8 +23,7 @@
 
 namespace accessibility
 {
-    class AccessibleGridControlHeaderCell final
-        : public cppu::ImplInheritanceHelper<AccessibleGridControlCell, 
css::accessibility::XAccessible>
+    class AccessibleGridControlHeaderCell final : public 
AccessibleGridControlCell
     {
         sal_Int32   m_nColumnRowId;
     public:
@@ -45,12 +44,6 @@ namespace accessibility
         /** Grabs the focus to the GridControl. */
         virtual void SAL_CALL grabFocus() override;
 
-        // XAccessible
-
-        /** @return  The XAccessibleContext interface of this object. */
-        virtual css::uno::Reference< css::accessibility::XAccessibleContext > 
SAL_CALL
-        getAccessibleContext() override;
-
         /** @return
                 The name of this class.
         */
diff --git a/toolkit/inc/controls/table/AccessibleGridControlTableBase.hxx 
b/toolkit/inc/controls/table/AccessibleGridControlTableBase.hxx
index 8e77da8aec3b..6c12bde959e4 100644
--- a/toolkit/inc/controls/table/AccessibleGridControlTableBase.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControlTableBase.hxx
@@ -29,7 +29,7 @@
 
 namespace accessibility {
 
-typedef cppu::ImplInheritanceHelper<GridControlAccessibleElement, 
css::accessibility::XAccessibleTable>
+typedef cppu::ImplInheritanceHelper<AccessibleGridControlBase, 
css::accessibility::XAccessibleTable>
         AccessibleGridControlTableImplHelper;
 
 /** The Grid Control accessible table objects inherit from this base class. It
diff --git a/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx 
b/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
index 334b1ffdaba9..6c31f6729274 100644
--- a/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
@@ -63,9 +63,7 @@ namespace accessibility
 
     // implementation of a table cell of GridControl
     class AccessibleGridControlTableCell final
-        : public cppu::ImplInheritanceHelper<AccessibleGridControlCell,
-                                             
css::accessibility::XAccessibleText,
-                                             css::accessibility::XAccessible>,
+        : public cppu::ImplInheritanceHelper<AccessibleGridControlCell, 
css::accessibility::XAccessibleText>,
           public ::comphelper::OCommonAccessibleText
     {
     private:
@@ -104,12 +102,6 @@ namespace accessibility
         */
         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/toolkit/source/controls/table/AccessibleGridControl.cxx 
b/toolkit/source/controls/table/AccessibleGridControl.cxx
index 1ae662be97d7..30710e27aa10 100644
--- a/toolkit/source/controls/table/AccessibleGridControl.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControl.cxx
@@ -40,7 +40,7 @@ using namespace ::vcl;
 AccessibleGridControl::AccessibleGridControl(
             const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
             svt::table::TableControl& _rTable)
-    : ImplInheritanceHelper(_rxParent, _rTable, 
AccessibleTableControlObjType::GRIDCONTROL)
+    : AccessibleGridControlBase(_rxParent, _rTable, 
AccessibleTableControlObjType::GRIDCONTROL)
 {
 }
 
@@ -72,14 +72,6 @@ sal_Int64 
AccessibleGridControl::implGetAccessibleChildCount()
     return m_aTable.GetAccessibleControlCount();
 }
 
-css::uno::Reference<css::accessibility::XAccessibleContext>
-    SAL_CALL AccessibleGridControl::getAccessibleContext()
-{
-    SolarMutexGuard aSolarGuard;
-    ensureAlive();
-    return this;
-}
-
 // css::accessibility::XAccessibleContext 
---------------------------------------------------------
 
 
diff --git a/toolkit/source/controls/table/AccessibleGridControlBase.cxx 
b/toolkit/source/controls/table/AccessibleGridControlBase.cxx
index cc14239f2e8a..2e90287260d7 100644
--- a/toolkit/source/controls/table/AccessibleGridControlBase.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControlBase.cxx
@@ -64,6 +64,16 @@ void SAL_CALL AccessibleGridControlBase::disposing()
     //m_aTable = NULL;
 }
 
+// css::accessibility::XAccessible
+
+css::uno::Reference<css::accessibility::XAccessibleContext> SAL_CALL 
AccessibleGridControlBase::getAccessibleContext()
+{
+    SolarMutexGuard g;
+
+    ensureAlive();
+    return this;
+}
+
 // css::accessibility::XAccessibleContext
 
 css::uno::Reference< css::accessibility::XAccessible > SAL_CALL 
AccessibleGridControlBase::getAccessibleParent()
@@ -269,29 +279,6 @@ sal_Int32 SAL_CALL 
AccessibleGridControlBase::getBackground(  )
     return sal_Int32(nColor);
 }
 
-
-GridControlAccessibleElement::GridControlAccessibleElement( const 
css::uno::Reference< css::accessibility::XAccessible >& rxParent,
-                        svt::table::TableControl& rTable,
-                        AccessibleTableControlObjType  eObjType )
-    : GridControlAccessibleElement_Base(rxParent, rTable, eObjType)
-{
-}
-
-// css::accessibility::XAccessible
-
-css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL 
GridControlAccessibleElement::getAccessibleContext()
-{
-    SolarMutexGuard g;
-
-    ensureAlive();
-    return this;
-}
-
-GridControlAccessibleElement::~GridControlAccessibleElement( )
-{
-}
-
-
 } // namespace accessibility
 
 
diff --git a/toolkit/source/controls/table/AccessibleGridControlHeaderCell.cxx 
b/toolkit/source/controls/table/AccessibleGridControlHeaderCell.cxx
index b23c103a705f..522a0a6dbbda 100644
--- a/toolkit/source/controls/table/AccessibleGridControlHeaderCell.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControlHeaderCell.cxx
@@ -33,7 +33,7 @@ 
AccessibleGridControlHeaderCell::AccessibleGridControlHeaderCell(sal_Int32 _nCol
                                   const Reference< XAccessible >& rxParent,
                                   svt::table::TableControl& rTable,
                                   AccessibleTableControlObjType  eObjType)
-    : ImplInheritanceHelper(rxParent, rTable,
+    : AccessibleGridControlCell(rxParent, rTable,
                             (eObjType == 
AccessibleTableControlObjType::ROWHEADERCELL) ? _nColumnRowId : 0,
                             (eObjType == 
AccessibleTableControlObjType::ROWHEADERCELL) ? 0 : _nColumnRowId,
                             eObjType)
@@ -85,14 +85,6 @@ Reference<XAccessible > SAL_CALL 
AccessibleGridControlHeaderCell::getAccessibleC
     throw IndexOutOfBoundsException();
 }
 
-        /** @return  The XAccessibleContext interface of this object. */
-    Reference< css::accessibility::XAccessibleContext > SAL_CALL 
AccessibleGridControlHeaderCell::getAccessibleContext()
-    {
-        ensureAlive();
-        return this;
-    }
-
-
 /** Grabs the focus to the column header. */
 void SAL_CALL AccessibleGridControlHeaderCell::grabFocus()
 {
diff --git a/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx 
b/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
index 1145a79b2f7c..46bae992325c 100644
--- a/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
@@ -165,18 +165,6 @@ namespace accessibility
         return nStateSet;
     }
 
-
-    // css::accessibility::XAccessible
-
-    /** @return  The css::accessibility::XAccessibleContext interface of this 
object. */
-    css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL 
AccessibleGridControlTableCell::getAccessibleContext()
-    {
-        SolarMutexGuard g;
-
-        ensureAlive();
-        return this;
-    }
-
     // css::accessibility::XAccessibleContext
 
     sal_Int64 SAL_CALL 
AccessibleGridControlTableCell::getAccessibleIndexInParent()

Reply via email to