accessibility/inc/extended/AccessibleBrowseBox.hxx   |   10 +---------
 accessibility/inc/extended/AccessibleGridControl.hxx |   10 +---------
 accessibility/source/helper/acc_factory.cxx          |    8 ++++----
 include/vcl/accessiblefactory.hxx                    |    5 +++--
 include/vcl/accessibletable.hxx                      |   15 +++------------
 include/vcl/accessibletableprovider.hxx              |   16 +++-------------
 svtools/source/brwbox/brwbox3.cxx                    |    8 ++------
 svtools/source/brwbox/brwimpl.hxx                    |    4 ++--
 toolkit/source/controls/table/tablecontrol_impl.cxx  |   14 +++++---------
 toolkit/source/controls/table/tablecontrol_impl.hxx  |    6 ++----
 vcl/source/helper/svtaccessiblefactory.cxx           |    6 ++++--
 11 files changed, 30 insertions(+), 72 deletions(-)

New commits:
commit 129e395935bf7330a1fe84986dd78502af36e07e
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Aug 30 12:29:48 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Aug 30 17:49:35 2023 +0200

    make IAccessibleBrowseBox extend cppu::WeakImplHelper
    
    i.e. push this up from the implementation class
    AccessibleBrowseBoxAccess to the interface class.
    
    Which means we don't need the getMyself helper method, and make the
    memory management simpler.
    
    Change-Id: Icecb83834bb3f5304908bbd3682b3d2ea06dbfe0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156285
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/accessibility/inc/extended/AccessibleBrowseBox.hxx 
b/accessibility/inc/extended/AccessibleBrowseBox.hxx
index 6605ff02be8b..b7e912df6e92 100644
--- a/accessibility/inc/extended/AccessibleBrowseBox.hxx
+++ b/accessibility/inc/extended/AccessibleBrowseBox.hxx
@@ -21,7 +21,6 @@
 #pragma once
 
 #include <extended/AccessibleBrowseBoxBase.hxx>
-#include <cppuhelper/implbase.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <vcl/accessibletableprovider.hxx>
 #include <mutex>
@@ -192,9 +191,7 @@ private:
     The instance holds its XAccessibleContext with a hard reference, while
     the context holds this instance weak.
 */
-class AccessibleBrowseBoxAccess final :
-    public cppu::WeakImplHelper<css::accessibility::XAccessible>,
-    public ::vcl::IAccessibleBrowseBox
+class AccessibleBrowseBoxAccess final : public ::vcl::IAccessibleBrowseBox
 {
 private:
     std::mutex                          m_aMutex;
@@ -221,11 +218,6 @@ private:
         SAL_CALL getAccessibleContext() override;
 
     // IAccessibleBrowseBox
-    virtual css::uno::Reference< css::accessibility::XAccessible >
-        getMyself() override
-    {
-        return this;
-    }
     void dispose() override;
     virtual bool isAlive() const override
     {
diff --git a/accessibility/source/helper/acc_factory.cxx 
b/accessibility/source/helper/acc_factory.cxx
index 364c8a3c8211..fb0468fe6d65 100644
--- a/accessibility/source/helper/acc_factory.cxx
+++ b/accessibility/source/helper/acc_factory.cxx
@@ -122,7 +122,7 @@ public:
             SvHeaderTabListBox& rBox
         ) const override;
 
-    virtual vcl::IAccessibleBrowseBox*
+    virtual rtl::Reference<vcl::IAccessibleBrowseBox>
         createAccessibleBrowseBox(
             const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
             vcl::IAccessibleTableProvider& _rBrowseBox
@@ -374,7 +374,7 @@ vcl::IAccessibleTabListBox* 
AccessibleFactory::createAccessibleTabListBox(
     return new AccessibleTabListBox( rxParent, rBox );
 }
 
-vcl::IAccessibleBrowseBox* AccessibleFactory::createAccessibleBrowseBox(
+rtl::Reference<vcl::IAccessibleBrowseBox> 
AccessibleFactory::createAccessibleBrowseBox(
     const Reference< XAccessible >& _rxParent, vcl::IAccessibleTableProvider& 
_rBrowseBox ) const
 {
     return new AccessibleBrowseBoxAccess( _rxParent, _rBrowseBox );
diff --git a/include/vcl/accessiblefactory.hxx 
b/include/vcl/accessiblefactory.hxx
index fe29e3b034e8..fde375c79875 100644
--- a/include/vcl/accessiblefactory.hxx
+++ b/include/vcl/accessiblefactory.hxx
@@ -88,7 +88,7 @@ namespace vcl
                 SvTreeListBox& _rListBox,
                 const css::uno::Reference< css::accessibility::XAccessible >& 
_xParent
             ) const = 0;
-        virtual vcl::IAccessibleBrowseBox*
+        virtual rtl::Reference<vcl::IAccessibleBrowseBox>
             createAccessibleBrowseBox(
                 const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
                 vcl::IAccessibleTableProvider& _rBrowseBox
diff --git a/include/vcl/accessibletableprovider.hxx 
b/include/vcl/accessibletableprovider.hxx
index a58576031422..30eafea49646 100644
--- a/include/vcl/accessibletableprovider.hxx
+++ b/include/vcl/accessibletableprovider.hxx
@@ -22,8 +22,8 @@
 
 #include <vcl/AccessibleBrowseBoxObjType.hxx>
 #include <vcl/window.hxx>
-
-namespace com::sun::star::accessibility { class XAccessible; }
+#include <cppuhelper/implbase.hxx>
+#include <com/sun/star/accessibility/XAccessible.hpp>
 
 namespace vcl
 {
@@ -158,19 +158,9 @@ protected:
 
 /** interface for an implementation of a browse box's Accessible component
 */
-class IAccessibleBrowseBox
+class IAccessibleBrowseBox : public 
cppu::WeakImplHelper<css::accessibility::XAccessible>
 {
 public:
-    /** returns the XAccessible object itself
-
-        The reference returned here can be used to control the life time of the
-        IAccessibleTableImplementation object.
-
-        The returned reference is guaranteed to not be <NULL/>.
-    */
-    virtual css::uno::Reference< css::accessibility::XAccessible >
-        getMyself() = 0;
-
     /** disposes the accessible implementation, so that it becomes defunc
     */
     virtual void dispose() = 0;
diff --git a/svtools/source/brwbox/brwbox3.cxx 
b/svtools/source/brwbox/brwbox3.cxx
index 4a5a8531e6ac..32ab1807ac69 100644
--- a/svtools/source/brwbox/brwbox3.cxx
+++ b/svtools/source/brwbox/brwbox3.cxx
@@ -97,11 +97,7 @@ Reference< XAccessible > BrowseBox::CreateAccessible()
         }
     }
 
-    Reference< XAccessible > xAccessible;
-    if ( m_pImpl->m_pAccessible )
-        xAccessible = m_pImpl->m_pAccessible->getMyself();
-
-    return xAccessible;
+    return m_pImpl->m_pAccessible;
 }
 
 
@@ -427,7 +423,7 @@ void BrowseBox::commitBrowseBoxEvent( sal_Int16 _nEventId, 
const Any& _rNewValue
 
 bool BrowseBox::isAccessibleAlive( ) const
 {
-    return ( nullptr != m_pImpl->m_pAccessible ) && 
m_pImpl->m_pAccessible->isAlive();
+    return m_pImpl->m_pAccessible && m_pImpl->m_pAccessible->isAlive();
 }
 
 // IAccessibleTableProvider
diff --git a/svtools/source/brwbox/brwimpl.hxx 
b/svtools/source/brwbox/brwimpl.hxx
index e822d7ef52c2..8c7017675a3f 100644
--- a/svtools/source/brwbox/brwimpl.hxx
+++ b/svtools/source/brwbox/brwimpl.hxx
@@ -55,12 +55,12 @@ namespace svt
 
     public:
         vcl::AccessibleFactoryAccess m_aFactoryAccess;
-        vcl::IAccessibleBrowseBox* m_pAccessible;
+        rtl::Reference<vcl::IAccessibleBrowseBox> m_pAccessible;
         THeaderCellMap          m_aColHeaderCellMap;
         THeaderCellMap          m_aRowHeaderCellMap;
 
     public:
-        BrowseBoxImpl() : m_pAccessible(nullptr)
+        BrowseBoxImpl()
         {
         }
 
diff --git a/vcl/source/helper/svtaccessiblefactory.cxx 
b/vcl/source/helper/svtaccessiblefactory.cxx
index 8877457641c0..278c9552b61d 100644
--- a/vcl/source/helper/svtaccessiblefactory.cxx
+++ b/vcl/source/helper/svtaccessiblefactory.cxx
@@ -23,6 +23,7 @@
 #include <vcl/svtaccessiblefactory.hxx>
 #include <vcl/accessiblefactory.hxx>
 #include <vcl/accessibletable.hxx>
+#include <vcl/accessibletableprovider.hxx>
 
 #include <tools/svlibrary.h>
 #include <tools/debug.hxx>
@@ -92,7 +93,7 @@ namespace vcl
                 return nullptr;
             }
 
-            virtual vcl::IAccessibleBrowseBox*
+            virtual rtl::Reference<vcl::IAccessibleBrowseBox>
                 createAccessibleBrowseBox(
                     const css::uno::Reference< css::accessibility::XAccessible 
>& /*_rxParent*/,
                     vcl::IAccessibleTableProvider& /*_rBrowseBox*/
commit 3c58ea89f4bbf7ec9a0ea88a8b753209ff68af64
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Wed Aug 30 12:19:15 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Wed Aug 30 17:49:26 2023 +0200

    make IAccessibleTableControl extend cppu::WeakImplHelper
    
    i.e. push this up from the implementation class
    AccessibleGridControlAccess to the interface class.
    
    Which means we don't need the getMyself helper method, and make the
    memory management simpler.
    
    Change-Id: Iced5f259638531a74ce86876d1a295e105530474
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156284
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/accessibility/inc/extended/AccessibleGridControl.hxx 
b/accessibility/inc/extended/AccessibleGridControl.hxx
index 7df6b82c3453..a1f7815ce167 100644
--- a/accessibility/inc/extended/AccessibleGridControl.hxx
+++ b/accessibility/inc/extended/AccessibleGridControl.hxx
@@ -21,7 +21,6 @@
 
 #include <extended/AccessibleGridControlBase.hxx>
 #include <extended/AccessibleGridControlTable.hxx>
-#include <cppuhelper/implbase.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <rtl/ref.hxx>
 #include <vcl/accessibletable.hxx>
@@ -160,9 +159,7 @@ private:
     the context holds this instance weak.</p>
 */
 
-class AccessibleGridControlAccess final :
-     public ::cppu::WeakImplHelper< css::accessibility::XAccessible >
-    ,public ::vcl::table::IAccessibleTableControl
+class AccessibleGridControlAccess final : public 
::vcl::table::IAccessibleTableControl
 {
 private:
     css::uno::Reference< css::accessibility::XAccessible > m_xParent;
@@ -186,11 +183,6 @@ private:
         SAL_CALL getAccessibleContext() override;
 
     // IAccessibleTable
-    virtual css::uno::Reference< css::accessibility::XAccessible >
-        getMyself() override
-    {
-        return this;
-    }
     void DisposeAccessImpl() override;
     virtual bool isAlive() const override
     {
diff --git a/accessibility/source/helper/acc_factory.cxx 
b/accessibility/source/helper/acc_factory.cxx
index 10cc27f007c6..364c8a3c8211 100644
--- a/accessibility/source/helper/acc_factory.cxx
+++ b/accessibility/source/helper/acc_factory.cxx
@@ -128,7 +128,7 @@ public:
             vcl::IAccessibleTableProvider& _rBrowseBox
         ) const override;
 
-    virtual IAccessibleTableControl*
+    virtual rtl::Reference<IAccessibleTableControl>
         createAccessibleTableControl(
             const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
             IAccessibleTable& _rTable
@@ -380,7 +380,7 @@ vcl::IAccessibleBrowseBox* 
AccessibleFactory::createAccessibleBrowseBox(
     return new AccessibleBrowseBoxAccess( _rxParent, _rBrowseBox );
 }
 
-IAccessibleTableControl* AccessibleFactory::createAccessibleTableControl(
+rtl::Reference<IAccessibleTableControl> 
AccessibleFactory::createAccessibleTableControl(
     const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) 
const
 {
     return new AccessibleGridControlAccess( _rxParent, _rTable );
diff --git a/include/vcl/accessiblefactory.hxx 
b/include/vcl/accessiblefactory.hxx
index a13e4dabc135..fe29e3b034e8 100644
--- a/include/vcl/accessiblefactory.hxx
+++ b/include/vcl/accessiblefactory.hxx
@@ -26,6 +26,7 @@
 
 #include <salhelper/simplereferenceobject.hxx>
 #include <tools/gen.hxx>
+#include <rtl/ref.hxx>
 
 namespace com::sun::star {
     namespace accessibility {
@@ -92,7 +93,7 @@ namespace vcl
                 const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
                 vcl::IAccessibleTableProvider& _rBrowseBox
             ) const = 0;
-        virtual table::IAccessibleTableControl*
+        virtual rtl::Reference<table::IAccessibleTableControl>
             createAccessibleTableControl(
                 const css::uno::Reference< css::accessibility::XAccessible >& 
_rxParent,
                 table::IAccessibleTable& _rTable
diff --git a/include/vcl/accessibletable.hxx b/include/vcl/accessibletable.hxx
index e662675c7dd1..66f5a1e5c050 100644
--- a/include/vcl/accessibletable.hxx
+++ b/include/vcl/accessibletable.hxx
@@ -21,10 +21,10 @@
 #define INCLUDED_VCL_ACCESSIBLETABLE_HXX
 
 #include <tools/gen.hxx>
-
 #include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <cppuhelper/implbase.hxx>
 
-namespace com::sun::star::accessibility { class XAccessible; }
 namespace vcl { class Window; }
 
 namespace vcl::table
@@ -108,18 +108,9 @@ protected:
 
 /** interface for an implementation of a table control's Accessible component
 */
-class IAccessibleTableControl
+class IAccessibleTableControl : public ::cppu::WeakImplHelper< 
css::accessibility::XAccessible >
 {
 public:
-    /** returns the XAccessible object itself
-
-        The reference returned here can be used to control the life time of the
-        IAccessibleTableImplementation object.
-
-        The returned reference is guaranteed to not be <NULL/>.
-    */
-    virtual css::uno::Reference< css::accessibility::XAccessible >
-        getMyself() = 0;
 
     /** disposes the accessible implementation, so that it becomes defunc
     */
diff --git a/toolkit/source/controls/table/tablecontrol_impl.cxx 
b/toolkit/source/controls/table/tablecontrol_impl.cxx
index 1b9b82b2bcb3..99c7b815ca97 100644
--- a/toolkit/source/controls/table/tablecontrol_impl.cxx
+++ b/toolkit/source/controls/table/tablecontrol_impl.cxx
@@ -237,7 +237,6 @@ namespace svt::table
         ,m_pTableFunctionSet    ( new TableFunctionSet( this  ) )
         ,m_nAnchor              ( -1                            )
         ,m_bUpdatingColWidths   ( false                         )
-        ,m_pAccessibleTable     ( nullptr                          )
     {
         m_pSelEngine.reset( new SelectionEngine( m_pDataWindow.get(), 
m_pTableFunctionSet.get() ) );
         m_pSelEngine->SetSelectionMode(SelectionMode::Single);
@@ -2369,10 +2368,10 @@ namespace svt::table
     }
 
 
-    Reference< XAccessible > TableControl_Impl::getAccessible( vcl::Window& 
i_parentWindow )
+    rtl::Reference<vcl::table::IAccessibleTableControl> 
TableControl_Impl::getAccessible( vcl::Window& i_parentWindow )
     {
-        if (m_xAccessible.is())
-            return m_xAccessible;
+        if (m_pAccessibleTable)
+            return m_pAccessibleTable;
 
         DBG_TESTSOLARMUTEX();
         if ( m_pAccessibleTable == nullptr )
@@ -2386,9 +2385,7 @@ namespace svt::table
             }
         }
 
-        if ( m_pAccessibleTable )
-            m_xAccessible = m_pAccessibleTable->getMyself();
-        return m_xAccessible;
+        return m_pAccessibleTable;
     }
 
 
@@ -2397,13 +2394,12 @@ namespace svt::table
         if ( m_pAccessibleTable )
             m_pAccessibleTable->DisposeAccessImpl();
         m_pAccessibleTable = nullptr;
-        m_xAccessible.clear();
     }
 
 
     bool TableControl_Impl::impl_isAccessibleAlive() const
     {
-        return ( nullptr != m_pAccessibleTable ) && 
m_pAccessibleTable->isAlive();
+        return m_pAccessibleTable && m_pAccessibleTable->isAlive();
     }
 
 
diff --git a/toolkit/source/controls/table/tablecontrol_impl.hxx 
b/toolkit/source/controls/table/tablecontrol_impl.hxx
index 2a16d6231ef2..a9498958e796 100644
--- a/toolkit/source/controls/table/tablecontrol_impl.hxx
+++ b/toolkit/source/controls/table/tablecontrol_impl.hxx
@@ -132,9 +132,7 @@ namespace svt::table
         bool                    m_bUpdatingColWidths;
 
         vcl::AccessibleFactoryAccess     m_aFactoryAccess;
-        vcl::table::IAccessibleTableControl*    m_pAccessibleTable;
-
-        css::uno::Reference<css::accessibility::XAccessible> m_xAccessible;
+        rtl::Reference<vcl::table::IAccessibleTableControl> m_pAccessibleTable;
 
     public:
         void        setModel( const PTableModel& _pModel );
@@ -282,7 +280,7 @@ namespace svt::table
         tools::Rectangle calcCellRect( sal_Int32 nRow, sal_Int32 nCol ) const;
 
         // A11Y
-        css::uno::Reference< css::accessibility::XAccessible >
+        rtl::Reference<vcl::table::IAccessibleTableControl>
                         getAccessible( vcl::Window& i_parentWindow );
         void            disposeAccessible();
 
diff --git a/vcl/source/helper/svtaccessiblefactory.cxx 
b/vcl/source/helper/svtaccessiblefactory.cxx
index f6728732a2e7..8877457641c0 100644
--- a/vcl/source/helper/svtaccessiblefactory.cxx
+++ b/vcl/source/helper/svtaccessiblefactory.cxx
@@ -22,6 +22,7 @@
 
 #include <vcl/svtaccessiblefactory.hxx>
 #include <vcl/accessiblefactory.hxx>
+#include <vcl/accessibletable.hxx>
 
 #include <tools/svlibrary.h>
 #include <tools/debug.hxx>
@@ -100,7 +101,7 @@ namespace vcl
                 return nullptr;
             }
 
-            virtual table::IAccessibleTableControl*
+            virtual rtl::Reference<table::IAccessibleTableControl>
                 createAccessibleTableControl(
                     const css::uno::Reference< css::accessibility::XAccessible 
>& /*_rxParent*/,
                     table::IAccessibleTable& /*_rTable*/

Reply via email to