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();