include/toolkit/awt/vclxwindows.hxx                  |    3 ---
 include/vcl/accessiblefactory.hxx                    |    4 ----
 include/vcl/toolkit/combobox.hxx                     |    2 ++
 include/vcl/toolkit/scrbar.hxx                       |    2 ++
 toolkit/source/awt/vclxwindows.cxx                   |   14 --------------
 vcl/inc/accessibility/vclxaccessiblescrollbar.hxx    |   13 ++++++++-----
 vcl/source/accessibility/acc_factory.cxx             |   17 -----------------
 vcl/source/accessibility/vclxaccessiblescrollbar.cxx |    8 ++++++++
 vcl/source/control/combobox.cxx                      |   11 +++++++++++
 vcl/source/control/scrbar.cxx                        |    7 +++++++
 10 files changed, 38 insertions(+), 43 deletions(-)

New commits:
commit 8ff115110e62687ee3595b7018587889862739c7
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu May 22 19:11:07 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon May 26 07:33:43 2025 +0200

    vcl a11y: Let ComboBox create its accessible directly
    
    This is the ComboBox equivalent of
    
        Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Thu May 22 12:30:12 2025 +0200
    
            vcl a11y: Let PushButton create its accessible directly
    
    , see that commit's message for more background.
    
    Change-Id: I8ae7a8a53fa04088ab9130d0905498eb45ad46ac
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185687
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/include/toolkit/awt/vclxwindows.hxx 
b/include/toolkit/awt/vclxwindows.hxx
index ecd2761ccc08..eca70b9ec08f 100644
--- a/include/toolkit/awt/vclxwindows.hxx
+++ b/include/toolkit/awt/vclxwindows.hxx
@@ -643,8 +643,6 @@ private:
     ItemListenerMultiplexer     maItemListeners;
 
     void            ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent 
) override;
-    virtual css::uno::Reference< css::accessibility::XAccessibleContext > 
CreateAccessibleContext() override;
-
 
 public:
                         VCLXComboBox();
diff --git a/include/vcl/accessiblefactory.hxx 
b/include/vcl/accessiblefactory.hxx
index 98f0f651a453..abed6406fced 100644
--- a/include/vcl/accessiblefactory.hxx
+++ b/include/vcl/accessiblefactory.hxx
@@ -65,8 +65,6 @@ public:
     static css::uno::Reference<css::accessibility::XAccessibleContext>
     createAccessibleContext(Edit* pEdit);
     static css::uno::Reference<css::accessibility::XAccessibleContext>
-    createAccessibleContext(ComboBox* pComboBox);
-    static css::uno::Reference<css::accessibility::XAccessibleContext>
     createAccessibleContext(ToolBox* pToolBox);
     static css::uno::Reference<css::accessibility::XAccessibleContext>
     createAccessibleContext(HeaderBar* pHeaderBar);
diff --git a/include/vcl/toolkit/combobox.hxx b/include/vcl/toolkit/combobox.hxx
index 2448626cd597..354486480521 100644
--- a/include/vcl/toolkit/combobox.hxx
+++ b/include/vcl/toolkit/combobox.hxx
@@ -86,6 +86,8 @@ public:
     virtual         ~ComboBox() override;
     virtual void    dispose() override;
 
+    virtual css::uno::Reference<css::accessibility::XAccessible> 
CreateAccessible() override;
+
     virtual void    Draw( OutputDevice* pDev, const Point& 
rPos,SystemTextColorFlags nFlags ) override;
     virtual void    Resize() override;
     virtual bool    EventNotify( NotifyEvent& rNEvt ) override;
diff --git a/toolkit/source/awt/vclxwindows.cxx 
b/toolkit/source/awt/vclxwindows.cxx
index b87434ad1edb..da8c5a0d845e 100644
--- a/toolkit/source/awt/vclxwindows.cxx
+++ b/toolkit/source/awt/vclxwindows.cxx
@@ -3959,14 +3959,6 @@ VCLXComboBox::~VCLXComboBox()
     SAL_INFO("toolkit", __FUNCTION__);
 }
 
-css::uno::Reference< css::accessibility::XAccessibleContext > 
VCLXComboBox::CreateAccessibleContext()
-{
-    SolarMutexGuard aGuard;
-
-    VclPtr<ComboBox> pComboBox = GetAs<ComboBox>();
-    return AccessibleFactory::createAccessibleContext(pComboBox);
-}
-
 void VCLXComboBox::dispose()
 {
     SolarMutexGuard aGuard;
diff --git a/vcl/source/accessibility/acc_factory.cxx 
b/vcl/source/accessibility/acc_factory.cxx
index a632d0c2f18c..3bf3ef9c857a 100644
--- a/vcl/source/accessibility/acc_factory.cxx
+++ b/vcl/source/accessibility/acc_factory.cxx
@@ -68,18 +68,6 @@ Reference< XAccessibleContext > 
AccessibleFactory::createAccessibleContext(Edit*
     return new VCLXAccessibleEdit(pEdit);
 }
 
-Reference< XAccessibleContext > 
AccessibleFactory::createAccessibleContext(ComboBox* pComboBox)
-{
-    bool bIsDropDownBox = false;
-    if (pComboBox)
-        bIsDropDownBox = ((pComboBox->GetStyle() & WB_DROPDOWN) == 
WB_DROPDOWN);
-
-    if ( bIsDropDownBox )
-        return new VCLXAccessibleDropDownComboBox(pComboBox);
-    else
-        return new VCLXAccessibleComboBox(pComboBox);
-}
-
 Reference< XAccessibleContext > 
AccessibleFactory::createAccessibleContext(vcl::Window* pWindow)
 {
     if (!pWindow)
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index b4371c2d98c5..7b1b2ab59b1e 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -28,6 +28,8 @@
 #include <vcl/event.hxx>
 #include <vcl/uitest/uiobject.hxx>
 
+#include <accessibility/vclxaccessibledropdowncombobox.hxx>
+#include <accessibility/vclxaccessiblecombobox.hxx>
 #include <listbox.hxx>
 #include <comphelper/lok.hxx>
 #include <o3tl/string_view.hxx>
@@ -1133,6 +1135,15 @@ void ComboBox::GetMaxVisColumnsAndLines( sal_uInt16& 
rnCols, sal_uInt16& rnLines
     }
 }
 
+css::uno::Reference<css::accessibility::XAccessible> 
ComboBox::CreateAccessible()
+{
+    const bool bIsDropDownBox = (GetStyle() & WB_DROPDOWN) == WB_DROPDOWN;
+    if (bIsDropDownBox)
+        return new VCLXAccessibleDropDownComboBox(this);
+
+    return new VCLXAccessibleComboBox(this);
+}
+
 void ComboBox::Draw(OutputDevice* pDev, const Point& rPos, 
SystemTextColorFlags eFlags)
 {
     GetMainWindow()->ApplySettings(*pDev);
commit 01f3de9b220c511155350021819e752285c6290d
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu May 22 19:03:23 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon May 26 07:33:36 2025 +0200

    vcl a11y: Let ScrollBar create its accessible directly
    
    This is the ScrollBar equivalent of
    
        Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Thu May 22 12:30:12 2025 +0200
    
            vcl a11y: Let PushButton create its accessible directly
    
    , see that commit's message for more background.
    
    Change-Id: I0d8759b699fea20ccf8bea9ec897879f6e3e07b1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185686
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/include/toolkit/awt/vclxwindows.hxx 
b/include/toolkit/awt/vclxwindows.hxx
index 44bc7abf351a..ecd2761ccc08 100644
--- a/include/toolkit/awt/vclxwindows.hxx
+++ b/include/toolkit/awt/vclxwindows.hxx
@@ -298,7 +298,6 @@ private:
     AdjustmentListenerMultiplexer maAdjustmentListeners;
 
     void            ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent 
) override;
-    virtual css::uno::Reference< css::accessibility::XAccessibleContext > 
CreateAccessibleContext() override;
 
 public:
                     VCLXScrollBar();
diff --git a/include/vcl/accessiblefactory.hxx 
b/include/vcl/accessiblefactory.hxx
index 3d2397260f80..98f0f651a453 100644
--- a/include/vcl/accessiblefactory.hxx
+++ b/include/vcl/accessiblefactory.hxx
@@ -62,8 +62,6 @@ class VCL_DLLPUBLIC AccessibleFactory
 public:
     AccessibleFactory() = delete;
 
-    static css::uno::Reference<css::accessibility::XAccessibleContext>
-    createAccessibleContext(ScrollBar* pScrollBar);
     static css::uno::Reference<css::accessibility::XAccessibleContext>
     createAccessibleContext(Edit* pEdit);
     static css::uno::Reference<css::accessibility::XAccessibleContext>
diff --git a/include/vcl/toolkit/scrbar.hxx b/include/vcl/toolkit/scrbar.hxx
index 4199ae0bc636..f0b611089870 100644
--- a/include/vcl/toolkit/scrbar.hxx
+++ b/include/vcl/toolkit/scrbar.hxx
@@ -92,6 +92,8 @@ public:
     virtual         ~ScrollBar() override;
     virtual void    dispose() override;
 
+    virtual css::uno::Reference<css::accessibility::XAccessible> 
CreateAccessible() override;
+
     virtual void MouseButtonDown(const MouseEvent& rMEvt) override;
     virtual void Tracking(const TrackingEvent& rTEvt) override;
     virtual void KeyInput(const KeyEvent& rKEvt) override;
diff --git a/toolkit/source/awt/vclxwindows.cxx 
b/toolkit/source/awt/vclxwindows.cxx
index bd5cc5cb3aac..b87434ad1edb 100644
--- a/toolkit/source/awt/vclxwindows.cxx
+++ b/toolkit/source/awt/vclxwindows.cxx
@@ -3127,12 +3127,6 @@ VCLXScrollBar::VCLXScrollBar() : maAdjustmentListeners( 
*this )
 {
 }
 
-css::uno::Reference< css::accessibility::XAccessibleContext > 
VCLXScrollBar::CreateAccessibleContext()
-{
-    VclPtr<ScrollBar> pScrollBar = GetAs<ScrollBar>();
-    return AccessibleFactory::createAccessibleContext(pScrollBar);
-}
-
 // css::lang::XComponent
 void VCLXScrollBar::dispose()
 {
diff --git a/vcl/inc/accessibility/vclxaccessiblescrollbar.hxx 
b/vcl/inc/accessibility/vclxaccessiblescrollbar.hxx
index 761ed2760627..f10594af8691 100644
--- a/vcl/inc/accessibility/vclxaccessiblescrollbar.hxx
+++ b/vcl/inc/accessibility/vclxaccessiblescrollbar.hxx
@@ -27,11 +27,10 @@
 #include <vcl/accessibility/vclxaccessiblecomponent.hxx>
 #include <vcl/toolkit/scrbar.hxx>
 
-
-class VCLXAccessibleScrollBar final : public cppu::ImplInheritanceHelper<
-                                          VCLXAccessibleComponent,
-                                          
css::accessibility::XAccessibleAction,
-                                          css::accessibility::XAccessibleValue>
+class VCLXAccessibleScrollBar final
+    : public cppu::ImplInheritanceHelper<VCLXAccessibleComponent, 
css::accessibility::XAccessible,
+                                         css::accessibility::XAccessibleAction,
+                                         css::accessibility::XAccessibleValue>
 {
     virtual ~VCLXAccessibleScrollBar() override = default;
 
@@ -46,6 +45,10 @@ public:
     virtual OUString SAL_CALL getImplementationName() override;
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 
+    // XAccessible
+    virtual 
css::uno::Reference<com::sun::star::accessibility::XAccessibleContext>
+        SAL_CALL getAccessibleContext() 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/acc_factory.cxx 
b/vcl/source/accessibility/acc_factory.cxx
index 7e69e8b231be..a632d0c2f18c 100644
--- a/vcl/source/accessibility/acc_factory.cxx
+++ b/vcl/source/accessibility/acc_factory.cxx
@@ -63,11 +63,6 @@ bool hasFloatingChild(vcl::Window *pWindow)
 }
 };
 
-Reference< XAccessibleContext > 
AccessibleFactory::createAccessibleContext(ScrollBar* pScrollBar)
-{
-    return new VCLXAccessibleScrollBar(pScrollBar);
-}
-
 Reference< XAccessibleContext > 
AccessibleFactory::createAccessibleContext(Edit* pEdit)
 {
     return new VCLXAccessibleEdit(pEdit);
diff --git a/vcl/source/accessibility/vclxaccessiblescrollbar.cxx 
b/vcl/source/accessibility/vclxaccessiblescrollbar.cxx
index 39c0aeb0535f..5a838b64834f 100644
--- a/vcl/source/accessibility/vclxaccessiblescrollbar.cxx
+++ b/vcl/source/accessibility/vclxaccessiblescrollbar.cxx
@@ -80,6 +80,14 @@ Sequence< OUString > 
VCLXAccessibleScrollBar::getSupportedServiceNames()
     return { u"com.sun.star.awt.AccessibleScrollBar"_ustr };
 }
 
+// XAccessible
+
+css::uno::Reference<com::sun::star::accessibility::XAccessibleContext>
+VCLXAccessibleScrollBar::getAccessibleContext()
+{
+    OExternalLockGuard aGuard(this);
+    return this;
+}
 
 // XAccessibleAction
 
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx
index d65094811965..7e8dc1939859 100644
--- a/vcl/source/control/scrbar.cxx
+++ b/vcl/source/control/scrbar.cxx
@@ -17,6 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <accessibility/vclxaccessiblescrollbar.hxx>
+
 #include <vcl/event.hxx>
 #include <vcl/decoview.hxx>
 #include <vcl/timer.hxx>
@@ -925,6 +927,11 @@ tools::Rectangle ScrollBar::GetScrollbarRegion() const
     return tools::Rectangle(Point(0, 0), GetOutputSizePixel());
 }
 
+css::uno::Reference<css::accessibility::XAccessible> 
ScrollBar::CreateAccessible()
+{
+    return new VCLXAccessibleScrollBar(this);
+}
+
 void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt )
 {
     bool bPrimaryWarps = 
GetSettings().GetStyleSettings().GetPrimaryButtonWarpsSlider();

Reply via email to