toolkit/inc/controls/table/AccessibleGridControl.hxx             |   84 
+---------
 toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx    |   22 --
 toolkit/source/controls/table/AccessibleGridControl.cxx          |   67 +------
 toolkit/source/controls/table/AccessibleGridControlTableCell.cxx |   34 ----
 toolkit/source/controls/table/tablecontrol_impl.cxx              |   30 +--
 toolkit/source/controls/table/tablecontrol_impl.hxx              |    4 
 6 files changed, 53 insertions(+), 188 deletions(-)

New commits:
commit cf8a59f258d10d1bc9b2eb27dbea91d26e2a1b84
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Jan 28 10:55:54 2025 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Jan 29 08:25:57 2025 +0100

    uno grid a11y: Use cppu::ImplInheritanceHelper
    
    Change-Id: I363a3836ee46f1243c6d61c323910bcac70c0da6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180834
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx 
b/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
index 57d5118cb87e..334b1ffdaba9 100644
--- a/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControlTableCell.hxx
@@ -61,13 +61,12 @@ namespace accessibility
         AccessibleGridControlCell& operator=( const AccessibleGridControlCell& 
) = delete;
     };
 
-    typedef ::cppu::ImplHelper2 <   css::accessibility::XAccessibleText
-                                ,   css::accessibility::XAccessible
-                                >   AccessibleTextHelper_BASE;
     // implementation of a table cell of GridControl
-    class AccessibleGridControlTableCell final   :public 
AccessibleGridControlCell
-                                        ,public AccessibleTextHelper_BASE
-                                        ,public 
::comphelper::OCommonAccessibleText
+    class AccessibleGridControlTableCell final
+        : public cppu::ImplInheritanceHelper<AccessibleGridControlCell,
+                                             
css::accessibility::XAccessibleText,
+                                             css::accessibility::XAccessible>,
+          public ::comphelper::OCommonAccessibleText
     {
     private:
         // OCommonAccessibleText
@@ -82,17 +81,6 @@ namespace accessibility
                                     sal_Int32 _nRowId,
                                     sal_uInt16 _nColId);
 
-        // XInterface 
-------------------------------------------------------------
-
-        /** Queries for a new interface. */
-        css::uno::Any SAL_CALL queryInterface( const css::uno::Type& rType ) 
override;
-
-        /** Acquires the object (calls acquire() on base class). */
-        virtual void SAL_CALL acquire() noexcept override;
-
-        /** Releases the object (calls release() on base class). */
-        virtual void SAL_CALL release() noexcept override;
-
         /** @return  The index of this object among the parent's children. */
         virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override;
 
diff --git a/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx 
b/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
index 0d80a6977a29..1145a79b2f7c 100644
--- a/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControlTableCell.cxx
@@ -96,38 +96,14 @@ namespace accessibility
         nEndIndex = 0;
     }
 
-    AccessibleGridControlTableCell::AccessibleGridControlTableCell(const 
css::uno::Reference<XAccessible >& _rxParent,
-                                svt::table::TableControl& _rTable,
-                                sal_Int32 _nRowPos,
-                                sal_uInt16 _nColPos)
-        :AccessibleGridControlCell(_rxParent, _rTable, _nRowPos, _nColPos, 
AccessibleTableControlObjType::TABLECELL)
+    AccessibleGridControlTableCell::AccessibleGridControlTableCell(
+        const css::uno::Reference<XAccessible>& _rxParent, 
svt::table::TableControl& _rTable,
+        sal_Int32 _nRowPos, sal_uInt16 _nColPos)
+        : ImplInheritanceHelper(_rxParent, _rTable, _nRowPos, _nColPos,
+                                AccessibleTableControlObjType::TABLECELL)
     {
     }
 
-    // XInterface
-
-    /** Queries for a new interface. */
-    css::uno::Any SAL_CALL AccessibleGridControlTableCell::queryInterface(
-            const css::uno::Type& rType )
-    {
-        Any aRet = AccessibleGridControlCell::queryInterface(rType);
-        if ( !aRet.hasValue() )
-            aRet = AccessibleTextHelper_BASE::queryInterface(rType);
-        return aRet;
-    }
-
-    /** Acquires the object (calls acquire() on base class). */
-    void SAL_CALL AccessibleGridControlTableCell::acquire() noexcept
-    {
-        AccessibleGridControlCell::acquire();
-    }
-
-    /** Releases the object (calls release() on base class). */
-    void SAL_CALL AccessibleGridControlTableCell::release() noexcept
-    {
-        AccessibleGridControlCell::release();
-    }
-
     css::awt::Rectangle SAL_CALL 
AccessibleGridControlTableCell::getCharacterBounds( sal_Int32 nIndex )
     {
         SolarMutexGuard aSolarGuard;
commit 7ebcd51ea2959c6c01ba2529a83509d3dcd04745
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Jan 28 10:33:29 2025 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Jan 29 08:25:50 2025 +0100

    uno grid a11y: Drop method only declared, but not implemented
    
    Implementation was dropped in
    
        commit ce52b490ddb7924c6b5b14fee4077182a3c7dd02
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Mon Jan 27 15:13:10 2025 +0100
    
            toolkit a11y: Simplify AccessibleGridControl::getAccessibleAtPoint
    
    Change-Id: Id6038b57648be5549645c5f77ebbfc4d387a5dd9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180833
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/toolkit/inc/controls/table/AccessibleGridControl.hxx 
b/toolkit/inc/controls/table/AccessibleGridControl.hxx
index 8b343a3c0e59..8d7b8133eb5a 100644
--- a/toolkit/inc/controls/table/AccessibleGridControl.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControl.hxx
@@ -114,13 +114,6 @@ private:
 
     // internal helper methods ------------------------------------------------
 
-    /** This method returns one of the children that are always present:
-        Data table, row and column header bar or corner control.
-        @attention  This method requires locked mutex's and a living object.
-        @return  The XAccessible interface of the specified child. */
-    css::uno::Reference< css::accessibility::XAccessible >
-        implGetFixedChild( sal_Int64 nChildIndex );
-
     /** The data table child. */
     rtl::Reference<AccessibleGridControlTable>                m_xTable;
 
commit 393222247a85c2621ce71986a3e8ce558da7b711
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Tue Jan 28 10:17:45 2025 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Jan 29 08:25:42 2025 +0100

    uno grid a11y: Merge AccessibleGridControl{,Access}
    
    So far, AccessibleGridControlAccess was implementing
    the XAccessible interface, and its
    XAccessible::getAccessibleContext implementation
    was returning a AccessibleGridControl instance
    that implements XAccessibleContext.
    
    Drop that separation and let AccessibleGridControl
    also implement the XAccessible interface directly
    and return itself in
    AccessibleGridControl::getAccessibleContext.
    
    TableControl_Impl::getAccessible now creates
    an AccessibleGridControl accordingly.
    
    No change in behavior intended or seen when
    testing with the grid in the sample doc attachment 198647
    from tdf#164783 when testing with Orca and Accerciser
    with the gtk3 and qt6 VCL plugins.
    Change-Id: Iabc4cd11e7b6b6e121c65a6813a28e218c34b4e1
    
    Change-Id: I8bfdf64f436a831251f155d0e1238e4d82d1fa58
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180832
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/toolkit/inc/controls/table/AccessibleGridControl.hxx 
b/toolkit/inc/controls/table/AccessibleGridControl.hxx
index c1f1a649d2a3..8b343a3c0e59 100644
--- a/toolkit/inc/controls/table/AccessibleGridControl.hxx
+++ b/toolkit/inc/controls/table/AccessibleGridControl.hxx
@@ -32,22 +32,20 @@ namespace accessibility {
 
 
 /** This class represents the complete accessible Grid Control object. */
-class AccessibleGridControl final : public AccessibleGridControlBase
+    class AccessibleGridControl final
+        : public cppu::ImplInheritanceHelper<AccessibleGridControlBase,
+                                             css::accessibility::XAccessible>
 {
-    friend class AccessibleGridControlAccess;
-
-    AccessibleGridControl(
-        const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
-        const css::uno::Reference< css::accessibility::XAccessible >& 
_rxCreator,
-        svt::table::TableControl& _rTable
-    );
-
     virtual ~AccessibleGridControl() override = default;
 
     /** Cleans up members. */
     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. */
@@ -79,6 +77,10 @@ class AccessibleGridControl final : public 
AccessibleGridControlBase
     virtual OUString SAL_CALL getImplementationName() override;
 
 public:
+    AccessibleGridControl(
+        const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
+        svt::table::TableControl& _rTable);
+
     // helper functions
 
      /** commitCellEvent commit the event at all listeners of the table
@@ -119,9 +121,6 @@ private:
     css::uno::Reference< css::accessibility::XAccessible >
         implGetFixedChild( sal_Int64 nChildIndex );
 
-    /// the css::accessibility::XAccessible which created the 
AccessibleGridControl
-    css::uno::WeakReference< css::accessibility::XAccessible >                 
   m_aCreator;
-
     /** The data table child. */
     rtl::Reference<AccessibleGridControlTable>                m_xTable;
 
@@ -135,60 +134,6 @@ private:
     inline sal_Int64 implGetAccessibleChildCount();
 };
 
-
-/** the XAccessible which creates/returns an AccessibleGridControl
-
-    <p>The instance holds its XAccessibleContext with a hard reference, while
-    the context holds this instance weak.</p>
-*/
-
-class AccessibleGridControlAccess final
-    : public cppu::WeakImplHelper<css::accessibility::XAccessible>
-{
-private:
-    css::uno::Reference< css::accessibility::XAccessible > m_xParent;
-    VclPtr<svt::table::TableControl>                       m_xTable;
-    rtl::Reference<AccessibleGridControl>                  m_xContext;
-
-public:
-    AccessibleGridControlAccess(
-        css::uno::Reference< css::accessibility::XAccessible > _xParent,
-        svt::table::TableControl& _rTable
-    );
-
-    // XAccessible
-    virtual css::uno::Reference< css::accessibility::XAccessibleContext >
-        SAL_CALL getAccessibleContext() override;
-
-    void DisposeAccessImpl();
-
-    void commitCellEvent(sal_Int16 nEventId, const css::uno::Any& rNewValue,
-                         const css::uno::Any& rOldValue)
-    {
-        if (m_xContext.is())
-            m_xContext->commitCellEvent( nEventId, rNewValue, rOldValue );
-    }
-
-    void commitTableEvent(sal_Int16 nEventId, const css::uno::Any& rNewValue,
-                          const css::uno::Any& rOldValue)
-    {
-        if (m_xContext.is())
-            m_xContext->commitTableEvent( nEventId, rNewValue, rOldValue );
-    }
-
-    void commitEvent(sal_Int16 nEventId, const css::uno::Any& rNewValue)
-    {
-        if (m_xContext.is())
-            m_xContext->commitEvent( nEventId, rNewValue, css::uno::Any() );
-    }
-
-private:
-    virtual ~AccessibleGridControlAccess() override;
-    AccessibleGridControlAccess( const AccessibleGridControlAccess& ) = delete;
-    AccessibleGridControlAccess& operator=( const AccessibleGridControlAccess& 
) = delete;
-};
-
-
 } // namespace accessibility
 
 
diff --git a/toolkit/source/controls/table/AccessibleGridControl.cxx 
b/toolkit/source/controls/table/AccessibleGridControl.cxx
index 0e0a9dab1af5..1ae662be97d7 100644
--- a/toolkit/source/controls/table/AccessibleGridControl.cxx
+++ b/toolkit/source/controls/table/AccessibleGridControl.cxx
@@ -38,10 +38,9 @@ using namespace ::com::sun::star::accessibility;
 using namespace ::vcl;
 
 AccessibleGridControl::AccessibleGridControl(
-            const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent, const css::uno::Reference< css::accessibility::XAccessible >& 
_rxCreator,
-            svt::table::TableControl& _rTable )
-    : AccessibleGridControlBase(_rxParent, _rTable, 
AccessibleTableControlObjType::GRIDCONTROL),
-      m_aCreator(_rxCreator)
+            const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
+            svt::table::TableControl& _rTable)
+    : ImplInheritanceHelper(_rxParent, _rTable, 
AccessibleTableControlObjType::GRIDCONTROL)
 {
 }
 
@@ -50,8 +49,6 @@ void SAL_CALL AccessibleGridControl::disposing()
 {
     SolarMutexGuard g;
 
-    m_aCreator.clear();
-
     if ( m_xTable.is() )
     {
         m_xTable->dispose();
@@ -75,6 +72,14 @@ 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 
---------------------------------------------------------
 
 
@@ -101,8 +106,8 @@ AccessibleGridControl::getAccessibleChild( sal_Int64 
nChildIndex )
         {
             if(!m_xColumnHeaderBar.is())
             {
-                m_xColumnHeaderBar = new 
AccessibleGridControlHeader(m_aCreator, m_aTable,
-                                                                     
AccessibleTableControlObjType::COLUMNHEADERBAR);
+                m_xColumnHeaderBar = new AccessibleGridControlHeader(
+                    this, m_aTable, 
AccessibleTableControlObjType::COLUMNHEADERBAR);
             }
             xChild = m_xColumnHeaderBar.get();
         }
@@ -110,8 +115,8 @@ AccessibleGridControl::getAccessibleChild( sal_Int64 
nChildIndex )
         {
             if(!m_xRowHeaderBar.is())
             {
-                m_xRowHeaderBar = new AccessibleGridControlHeader(m_aCreator, 
m_aTable,
-                                                                  
AccessibleTableControlObjType::ROWHEADERBAR);
+                m_xRowHeaderBar = new AccessibleGridControlHeader(
+                    this, m_aTable, 
AccessibleTableControlObjType::ROWHEADERBAR);
             }
             xChild = m_xRowHeaderBar.get();
         }
@@ -119,7 +124,7 @@ AccessibleGridControl::getAccessibleChild( sal_Int64 
nChildIndex )
         {
             if(!m_xTable.is())
             {
-                m_xTable = new AccessibleGridControlTable(m_aCreator, 
m_aTable);
+                m_xTable = new AccessibleGridControlTable(this, m_aTable);
             }
             xChild = m_xTable.get();
         }
@@ -222,46 +227,6 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 
_nEventId,const Any& _rNe
         m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
 }
 
-// = AccessibleGridControlAccess
-
-
-AccessibleGridControlAccess::AccessibleGridControlAccess(
-        css::uno::Reference<css::accessibility::XAccessible> xParent, 
svt::table::TableControl& rTable )
-    : m_xParent(std::move( xParent ))
-    , m_xTable(& rTable)
-{
-}
-
-
-AccessibleGridControlAccess::~AccessibleGridControlAccess()
-{
-}
-
-
-void AccessibleGridControlAccess::DisposeAccessImpl()
-{
-    SolarMutexGuard g;
-
-    m_xTable.clear();
-    if (m_xContext.is())
-    {
-        m_xContext->dispose();
-        m_xContext.clear();
-    }
-}
-
-
-css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL 
AccessibleGridControlAccess::getAccessibleContext()
-{
-    SolarMutexGuard g;
-
-    if (!m_xContext.is() && m_xTable)
-        m_xContext = new AccessibleGridControl(m_xParent, this, *m_xTable);
-
-    return m_xContext;
-}
-
-
 }   // namespace accessibility
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/toolkit/source/controls/table/tablecontrol_impl.cxx 
b/toolkit/source/controls/table/tablecontrol_impl.cxx
index 30decac8f104..1900de551ddc 100644
--- a/toolkit/source/controls/table/tablecontrol_impl.cxx
+++ b/toolkit/source/controls/table/tablecontrol_impl.cxx
@@ -2268,15 +2268,15 @@ namespace svt::table
 
     void TableControl_Impl::commitCellEvent( sal_Int16 const i_eventID, const 
Any& i_newValue, const Any& i_oldValue )
     {
-        if (m_pAccessibleTable)
-             m_pAccessibleTable->commitCellEvent( i_eventID, i_newValue, 
i_oldValue );
+        if (m_xAccessibleTable.is())
+            m_xAccessibleTable->commitCellEvent(i_eventID, i_newValue, 
i_oldValue);
     }
 
 
     void TableControl_Impl::commitTableEvent( sal_Int16 const i_eventID, const 
Any& i_newValue, const Any& i_oldValue )
     {
-        if (m_pAccessibleTable)
-             m_pAccessibleTable->commitTableEvent( i_eventID, i_newValue, 
i_oldValue );
+        if (m_xAccessibleTable.is())
+            m_xAccessibleTable->commitTableEvent(i_eventID, i_newValue, 
i_oldValue);
     }
 
 
@@ -2338,37 +2338,35 @@ namespace svt::table
             impl_ni_ScrollColumns( _pScrollbar->GetDelta() );
     }
 
-    const rtl::Reference<accessibility::AccessibleGridControlAccess>&
+    const rtl::Reference<accessibility::AccessibleGridControl>&
     TableControl_Impl::getAccessible(vcl::Window& i_parentWindow)
     {
-        if (m_pAccessibleTable)
-            return m_pAccessibleTable;
+        if (m_xAccessibleTable.is())
+            return m_xAccessibleTable;
 
         DBG_TESTSOLARMUTEX();
 
         Reference<XAccessible> const xAccParent = 
i_parentWindow.GetAccessible();
         if (xAccParent.is())
         {
-            m_pAccessibleTable = new 
accessibility::AccessibleGridControlAccess(
-                xAccParent, m_rAntiImpl
-            );
+            m_xAccessibleTable = new 
accessibility::AccessibleGridControl(xAccParent, m_rAntiImpl);
         }
 
-        return m_pAccessibleTable;
+        return m_xAccessibleTable;
     }
 
 
     void TableControl_Impl::disposeAccessible()
     {
-        if ( m_pAccessibleTable )
-            m_pAccessibleTable->DisposeAccessImpl();
-        m_pAccessibleTable = nullptr;
+        if (m_xAccessibleTable.is())
+            m_xAccessibleTable->dispose();
+        m_xAccessibleTable.clear();
     }
 
     void TableControl_Impl::impl_commitAccessibleEvent( sal_Int16 const 
i_eventID, Any const & i_newValue )
     {
-        if (m_pAccessibleTable)
-             m_pAccessibleTable->commitEvent( i_eventID, i_newValue );
+        if (m_xAccessibleTable.is())
+            m_xAccessibleTable->commitEvent(i_eventID, i_newValue, 
css::uno::Any());
     }
 
 
diff --git a/toolkit/source/controls/table/tablecontrol_impl.hxx 
b/toolkit/source/controls/table/tablecontrol_impl.hxx
index d55591477223..13f1f244fc46 100644
--- a/toolkit/source/controls/table/tablecontrol_impl.hxx
+++ b/toolkit/source/controls/table/tablecontrol_impl.hxx
@@ -129,7 +129,7 @@ namespace svt::table
         RowPos                  m_nAnchor;
         bool                    m_bUpdatingColWidths;
 
-        rtl::Reference<accessibility::AccessibleGridControlAccess> 
m_pAccessibleTable;
+        rtl::Reference<accessibility::AccessibleGridControl> 
m_xAccessibleTable;
 
     public:
         void        setModel( const PTableModel& _pModel );
@@ -289,7 +289,7 @@ namespace svt::table
         tools::Rectangle calcCellRect( sal_Int32 nRow, sal_Int32 nCol ) const;
 
         // A11Y
-        const rtl::Reference<accessibility::AccessibleGridControlAccess>&
+        const rtl::Reference<accessibility::AccessibleGridControl>&
         getAccessible(vcl::Window& i_parentWindow);
         void            disposeAccessible();
 

Reply via email to