include/toolkit/awt/vclxwindows.hxx | 3 -- include/vcl/accessiblefactory.hxx | 6 ----- include/vcl/toolkit/button.hxx | 6 +++++ toolkit/source/awt/vclxwindows.cxx | 18 ----------------- vcl/inc/accessibility/vclxaccessiblebutton.hxx | 15 +++++++------- vcl/inc/accessibility/vclxaccessiblecheckbox.hxx | 13 +++++++----- vcl/inc/accessibility/vclxaccessibleradiobutton.hxx | 13 +++++++----- vcl/source/accessibility/acc_factory.cxx | 15 -------------- vcl/source/accessibility/vclxaccessiblebutton.cxx | 7 ++++++ vcl/source/accessibility/vclxaccessiblecheckbox.cxx | 7 ++++++ vcl/source/accessibility/vclxaccessibleradiobutton.cxx | 8 +++++++ vcl/source/control/button.cxx | 18 +++++++++++++++++ 12 files changed, 70 insertions(+), 59 deletions(-)
New commits: commit e59f294c0227ee1b67d22cbc34f59f182b8b3a84 Author: Michael Weghorn <[email protected]> AuthorDate: Thu May 22 13:27:11 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon May 26 07:33:09 2025 +0200 vcl a11y: Let RadioButton create its accessible directly This is the RadioButton equivalent of Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b Author: Michael Weghorn <[email protected]> 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: I0bfe50d36250074e21df42ff046a97095b198b71 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185672 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/include/toolkit/awt/vclxwindows.hxx b/include/toolkit/awt/vclxwindows.hxx index 13bd296c0f3c..3747cff5ab14 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -192,7 +192,6 @@ private: void ImplClickedOrToggled( bool bToggled ); void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override; public: VCLXRadioButton(); diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index beb9ee295484..27b6d35ac6ac 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(RadioButton* pRadioButton); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(ListBox* pListBox); static css::uno::Reference<css::accessibility::XAccessibleContext> diff --git a/include/vcl/toolkit/button.hxx b/include/vcl/toolkit/button.hxx index 513321c46c0a..19dd68386bee 100644 --- a/include/vcl/toolkit/button.hxx +++ b/include/vcl/toolkit/button.hxx @@ -436,6 +436,8 @@ public: virtual ~RadioButton() 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 2247f060fb55..87a943de80da 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -1056,12 +1056,6 @@ VCLXRadioButton::VCLXRadioButton() : maItemListeners( *this ), maActionListeners { } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXRadioButton::CreateAccessibleContext() -{ - VclPtr<RadioButton> pRadioButton = GetAs<RadioButton>(); - return AccessibleFactory::createAccessibleContext(pRadioButton); -} - void VCLXRadioButton::dispose() { SolarMutexGuard aGuard; diff --git a/vcl/inc/accessibility/vclxaccessibleradiobutton.hxx b/vcl/inc/accessibility/vclxaccessibleradiobutton.hxx index 34158f283a82..320a2453ab5f 100644 --- a/vcl/inc/accessibility/vclxaccessibleradiobutton.hxx +++ b/vcl/inc/accessibility/vclxaccessibleradiobutton.hxx @@ -27,11 +27,10 @@ #include <cppuhelper/implbase.hxx> #include <vcl/toolkit/button.hxx> - -class VCLXAccessibleRadioButton final : public cppu::ImplInheritanceHelper< - VCLXAccessibleTextComponent, - css::accessibility::XAccessibleAction, - css::accessibility::XAccessibleValue> +class VCLXAccessibleRadioButton final + : public cppu::ImplInheritanceHelper< + VCLXAccessibleTextComponent, css::accessibility::XAccessible, + css::accessibility::XAccessibleAction, css::accessibility::XAccessibleValue> { virtual ~VCLXAccessibleRadioButton() override = default; @@ -47,6 +46,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 43aad6347966..db1bbc8519d5 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(RadioButton* pRadioButton) -{ - return new VCLXAccessibleRadioButton(pRadioButton); -} - Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(ListBox* pListBox) { bool bIsDropDownBox = false; diff --git a/vcl/source/accessibility/vclxaccessibleradiobutton.cxx b/vcl/source/accessibility/vclxaccessibleradiobutton.cxx index 1deac0fbe3f9..20bcf81c35bc 100644 --- a/vcl/source/accessibility/vclxaccessibleradiobutton.cxx +++ b/vcl/source/accessibility/vclxaccessibleradiobutton.cxx @@ -117,6 +117,14 @@ Sequence< OUString > VCLXAccessibleRadioButton::getSupportedServiceNames() return { u"com.sun.star.awt.AccessibleRadioButton"_ustr }; } +// XAccessible + +css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> +VCLXAccessibleRadioButton::getAccessibleContext() +{ + OExternalLockGuard aGuard(this); + return this; +} // XAccessibleAction diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 99c675f9f250..6099686b8419 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -38,6 +38,7 @@ #include <accessibility/vclxaccessiblebutton.hxx> #include <accessibility/vclxaccessiblecheckbox.hxx> +#include <accessibility/vclxaccessibleradiobutton.hxx> #include <bitmaps.hlst> #include <svdata.hxx> #include <window.h> @@ -2433,6 +2434,11 @@ void RadioButton::dispose() Button::dispose(); } +css::uno::Reference<css::accessibility::XAccessible> RadioButton::CreateAccessible() +{ + return new VCLXAccessibleRadioButton(this); +} + void RadioButton::MouseButtonDown( const MouseEvent& rMEvt ) { if ( rMEvt.IsLeft() && maMouseRect.Contains( rMEvt.GetPosPixel() ) ) commit 2a87fc4d06f8f53112dce3d98d7e166a895104f8 Author: Michael Weghorn <[email protected]> AuthorDate: Thu May 22 13:17:01 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon May 26 07:33:03 2025 +0200 vcl a11y: Let CheckBox create its accessible directly This is the CheckBox equivalent of Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b Author: Michael Weghorn <[email protected]> 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: I6b6ead743cde3489935a902fed9b63d78fd642f8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185671 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/include/toolkit/awt/vclxwindows.hxx b/include/toolkit/awt/vclxwindows.hxx index 1b12bfa9c165..13bd296c0f3c 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -143,7 +143,6 @@ private: ItemListenerMultiplexer maItemListeners; void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override; public: VCLXCheckBox(); diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index 05802a27d0d2..beb9ee295484 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(CheckBox* pCheckBox); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(RadioButton* pRadioButton); static css::uno::Reference<css::accessibility::XAccessibleContext> diff --git a/include/vcl/toolkit/button.hxx b/include/vcl/toolkit/button.hxx index 21938f96fae1..513321c46c0a 100644 --- a/include/vcl/toolkit/button.hxx +++ b/include/vcl/toolkit/button.hxx @@ -330,6 +330,8 @@ public: public: explicit CheckBox( vcl::Window* pParent, WinBits nStyle = 0 ); + 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 d4d5e786b76c..2247f060fb55 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -777,12 +777,6 @@ VCLXCheckBox::VCLXCheckBox() : maActionListeners( *this ), maItemListeners( *th { } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXCheckBox::CreateAccessibleContext() -{ - VclPtr<CheckBox> pCheckBox = GetAs<CheckBox>(); - return AccessibleFactory::createAccessibleContext(pCheckBox); -} - void VCLXCheckBox::dispose() { SolarMutexGuard aGuard; diff --git a/vcl/inc/accessibility/vclxaccessiblecheckbox.hxx b/vcl/inc/accessibility/vclxaccessiblecheckbox.hxx index fa72c12f8f33..3216e131a2aa 100644 --- a/vcl/inc/accessibility/vclxaccessiblecheckbox.hxx +++ b/vcl/inc/accessibility/vclxaccessiblecheckbox.hxx @@ -27,11 +27,10 @@ #include <cppuhelper/implbase.hxx> #include <vcl/toolkit/button.hxx> - -class VCLXAccessibleCheckBox final : public cppu::ImplInheritanceHelper< - VCLXAccessibleTextComponent, - css::accessibility::XAccessibleAction, - css::accessibility::XAccessibleValue> +class VCLXAccessibleCheckBox final + : public cppu::ImplInheritanceHelper< + VCLXAccessibleTextComponent, css::accessibility::XAccessible, + css::accessibility::XAccessibleAction, css::accessibility::XAccessibleValue> { private: bool m_bChecked; @@ -57,6 +56,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 cd6b8d6451ea..43aad6347966 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(CheckBox* pCheckBox) -{ - return new VCLXAccessibleCheckBox(pCheckBox); -} - Reference<XAccessibleContext> AccessibleFactory::createAccessibleContext(RadioButton* pRadioButton) { return new VCLXAccessibleRadioButton(pRadioButton); diff --git a/vcl/source/accessibility/vclxaccessiblecheckbox.cxx b/vcl/source/accessibility/vclxaccessiblecheckbox.cxx index 6066e122ecdd..9c3bca2a48ea 100644 --- a/vcl/source/accessibility/vclxaccessiblecheckbox.cxx +++ b/vcl/source/accessibility/vclxaccessiblecheckbox.cxx @@ -145,6 +145,13 @@ Sequence< OUString > VCLXAccessibleCheckBox::getSupportedServiceNames() return { u"com.sun.star.awt.AccessibleCheckBox"_ustr }; } +// XAccessible +css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> +VCLXAccessibleCheckBox::getAccessibleContext() +{ + OExternalLockGuard aGuard(this); + return this; +} // XAccessibleAction diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 04c4a141c558..99c675f9f250 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -37,6 +37,7 @@ #include <vcl/uitest/uiobject.hxx> #include <accessibility/vclxaccessiblebutton.hxx> +#include <accessibility/vclxaccessiblecheckbox.hxx> #include <bitmaps.hlst> #include <svdata.hxx> #include <window.h> @@ -3258,6 +3259,11 @@ CheckBox::CheckBox( vcl::Window* pParent, WinBits nStyle ) : ImplInit( pParent, nStyle ); } +css::uno::Reference<css::accessibility::XAccessible> CheckBox::CreateAccessible() +{ + return new VCLXAccessibleCheckBox(this); +} + void CheckBox::MouseButtonDown( const MouseEvent& rMEvt ) { if ( rMEvt.IsLeft() && maMouseRect.Contains( rMEvt.GetPosPixel() ) ) commit f82aac71ede9c3f2dc059ca4c8b24f60e0841933 Author: Michael Weghorn <[email protected]> AuthorDate: Thu May 22 12:30:12 2025 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Mon May 26 07:32:55 2025 +0200 vcl a11y: Let PushButton create its accessible directly So far, the VCLXButton was the XAccessible implementation for PushButton (and subclasses), which got returned in Window::CreateAccessible. VCLXButton's implementation of XAccessible::getAccessibleContext was then responsible for creating the XAccessibleContext, a VCLXAccessibleButton. Drop that separation between XAccessible and XAccessibleContext, let VCLXAccessibleButton also implement the XAccessible interface itself, and override Window::CreateAccessible in PushButton to create the VCLXAccessibleButton directly without requiring the VCLXButton and AccessibleFactory for this. This is one step towards unifying the approach for all vcl::Window subclasses (some were already creating their accessibles directly), makes responsibilities clearer (currently shared between vcl::Window and VCLXWindow) and prepares for more upcoming a11y changes (towards making VCLXAccessibleComponent/OAccessibleComponentHelper implement both, XAccessible and XAccessibleContext). Similar changes for other vcl::Window subclasses will follow. Internal code previously depending on the fact that a vcl::Window's VCLXWindow/XWindow was its XAccessible was adjusted previously in commits like commit b1f3e41f1015f0166dca1382c5fa1d1223f72fb8 Author: Michael Weghorn <[email protected]> Date: Wed May 21 11:03:56 2025 +0200 sw a11y test: Don't rely on XWindow being XAccessible If this commit causes any issues, there might be another place requiring a similar change. According to the discussion in [1], there might be third-party code (unrelated to a11y except for using UNO a11y API) also relying on the assumption that the vcl::Window's XAccessible is its VCLXWindow, but the UNO a11y API is an internal implementation detail explicitly unpublished in commit 70626249cd247d9acdad417b8eaf252bae22c059 Date: Thu Nov 29 00:27:03 2012 +0100 API CHANGE a11y unpublishing and add/removeListener rename. and has no stability guarantuee whatsoever and is therefore not meant to be used by external users. If any third-party code was relying on this implementation detail, it should be ported away from relying on UNO a11y API. If there were a desperate need to still be able to retrieve the XAccessibleContext via the VCLXWindow/XWindow (at least temporarily) somehow, a (temporary) workaround once this commit and corresponding upcoming commits are in place could be to let VCLXWindow still implement the XAccessible interface and return the XAccessibleContext from the window's actual XAccessible in VLCXWindow::getAccessibleContext. But in my opinion, code relying on that assumption should really be adjusted instead, also to avoid breaking again when unpublished UNO a11y API changes again in the future. [1] https://gerrit.libreoffice.org/c/core/+/185597/comments/48aae563_7c620891 Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185670 Reviewed-by: Michael Weghorn <[email protected]> Tested-by: Jenkins diff --git a/include/toolkit/awt/vclxwindows.hxx b/include/toolkit/awt/vclxwindows.hxx index 317286d598e6..1b12bfa9c165 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -98,7 +98,6 @@ private: ItemListenerMultiplexer maItemListeners; void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override; public: VCLXButton(); diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index 71fdc103197c..05802a27d0d2 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(PushButton* pButton); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(CheckBox* pCheckBox); static css::uno::Reference<css::accessibility::XAccessibleContext> diff --git a/include/vcl/toolkit/button.hxx b/include/vcl/toolkit/button.hxx index b28cd61e376d..21938f96fae1 100644 --- a/include/vcl/toolkit/button.hxx +++ b/include/vcl/toolkit/button.hxx @@ -130,6 +130,8 @@ public: explicit PushButton( vcl::Window* pParent, WinBits nStyle = 0 ); + 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 f2c183fb846f..d4d5e786b76c 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -381,12 +381,6 @@ VCLXButton::~VCLXButton() { } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXButton::CreateAccessibleContext() -{ - VclPtr<PushButton> pButton = GetAs<PushButton>(); - return AccessibleFactory::createAccessibleContext(pButton); -} - void VCLXButton::dispose() { SolarMutexGuard aGuard; diff --git a/vcl/inc/accessibility/vclxaccessiblebutton.hxx b/vcl/inc/accessibility/vclxaccessiblebutton.hxx index 124d3ef6073d..d84845c07fae 100644 --- a/vcl/inc/accessibility/vclxaccessiblebutton.hxx +++ b/vcl/inc/accessibility/vclxaccessiblebutton.hxx @@ -27,13 +27,10 @@ #include <cppuhelper/implbase.hxx> #include <vcl/toolkit/button.hxx> - - - -class VCLXAccessibleButton final : public cppu::ImplInheritanceHelper< - VCLXAccessibleTextComponent, - css::accessibility::XAccessibleAction, - css::accessibility::XAccessibleValue> +class VCLXAccessibleButton final + : public cppu::ImplInheritanceHelper< + VCLXAccessibleTextComponent, css::accessibility::XAccessible, + css::accessibility::XAccessibleAction, css::accessibility::XAccessibleValue> { virtual ~VCLXAccessibleButton() override = default; @@ -48,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; + // XAccessibleContext virtual OUString SAL_CALL getAccessibleName( ) override; diff --git a/vcl/source/accessibility/acc_factory.cxx b/vcl/source/accessibility/acc_factory.cxx index 6cdac506282e..cd6b8d6451ea 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(PushButton* pButton) -{ - return new VCLXAccessibleButton(pButton); -} - Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(CheckBox* pCheckBox) { return new VCLXAccessibleCheckBox(pCheckBox); diff --git a/vcl/source/accessibility/vclxaccessiblebutton.cxx b/vcl/source/accessibility/vclxaccessiblebutton.cxx index b60a131ba943..d4937fd793a0 100644 --- a/vcl/source/accessibility/vclxaccessiblebutton.cxx +++ b/vcl/source/accessibility/vclxaccessiblebutton.cxx @@ -112,6 +112,13 @@ Sequence< OUString > VCLXAccessibleButton::getSupportedServiceNames() return { u"com.sun.star.awt.AccessibleButton"_ustr }; } +// XAccessible +css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> +VCLXAccessibleButton::getAccessibleContext() +{ + OExternalLockGuard aGuard(this); + return this; +} // XAccessibleContext diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 07e211c198df..04c4a141c558 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -36,6 +36,7 @@ #include <vcl/stdtext.hxx> #include <vcl/uitest/uiobject.hxx> +#include <accessibility/vclxaccessiblebutton.hxx> #include <bitmaps.hlst> #include <svdata.hxx> #include <window.h> @@ -1266,6 +1267,11 @@ PushButton::PushButton( vcl::Window* pParent, WinBits nStyle ) : ImplInit( pParent, nStyle ); } +css::uno::Reference<css::accessibility::XAccessible> PushButton::CreateAccessible() +{ + return new VCLXAccessibleButton(this); +} + void PushButton::MouseButtonDown( const MouseEvent& rMEvt ) { if ( !(rMEvt.IsLeft() &&
