include/toolkit/awt/vclxwindows.hxx | 7 ---- include/vcl/accessiblefactory.hxx | 6 --- include/vcl/toolkit/fixed.hxx | 2 + include/vcl/toolkit/fixedhyper.hxx | 2 + include/vcl/toolkit/lstbox.hxx | 2 + toolkit/source/awt/vclxwindows.cxx | 20 ------------ vcl/inc/accessibility/vclxaccessiblefixedhyperlink.hxx | 10 +++++- vcl/inc/accessibility/vclxaccessiblefixedtext.hxx | 10 +++++- vcl/source/accessibility/acc_factory.cxx | 22 -------------- vcl/source/accessibility/vclxaccessiblefixedhyperlink.cxx | 16 +++++++++- vcl/source/accessibility/vclxaccessiblefixedtext.cxx | 15 ++++++++- vcl/source/control/fixed.cxx | 7 ++++ vcl/source/control/fixedhyper.cxx | 7 ++++ vcl/source/control/listbox.cxx | 11 +++++++ 14 files changed, 76 insertions(+), 61 deletions(-)
New commits: commit 77e753ede1e0227dbe885a0fdf136dd9801d4742 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu May 22 15:28:59 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Mon May 26 07:33:29 2025 +0200 vcl a11y: Let FixedText create its accessible directly This is the FixedText 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: Id3cbc91d6217bbca2d0e770f4fa4813377c10fe6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185675 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 156abdb47134..44bc7abf351a 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -269,8 +269,6 @@ public: class VCLXFixedText final : public cppu::ImplInheritanceHelper<VCLXWindow, css::awt::XFixedText> { - virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override; - public: VCLXFixedText(); virtual ~VCLXFixedText() override; diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index c32325ea5ee8..3d2397260f80 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(FixedText* pFixedText); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(ScrollBar* pScrollBar); static css::uno::Reference<css::accessibility::XAccessibleContext> diff --git a/include/vcl/toolkit/fixed.hxx b/include/vcl/toolkit/fixed.hxx index fec5234748ad..bb6f0a0bbadc 100644 --- a/include/vcl/toolkit/fixed.hxx +++ b/include/vcl/toolkit/fixed.hxx @@ -57,6 +57,8 @@ public: virtual ~FixedText() override; virtual void dispose() override; + virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override; + virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override; diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index 2806e7fe7326..bd5cc5cb3aac 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -3005,12 +3005,6 @@ VCLXFixedText::~VCLXFixedText() { } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXFixedText::CreateAccessibleContext() -{ - VclPtr<FixedText> pFixedText = GetAs<FixedText>(); - return AccessibleFactory::createAccessibleContext(pFixedText); -} - void VCLXFixedText::setText( const OUString& Text ) { SolarMutexGuard aGuard; diff --git a/vcl/inc/accessibility/vclxaccessiblefixedtext.hxx b/vcl/inc/accessibility/vclxaccessiblefixedtext.hxx index 24b4add3f79c..5855522d954e 100644 --- a/vcl/inc/accessibility/vclxaccessiblefixedtext.hxx +++ b/vcl/inc/accessibility/vclxaccessiblefixedtext.hxx @@ -21,14 +21,20 @@ #include <accessibility/vclxaccessibletextcomponent.hxx> -class VCLXAccessibleFixedText final : public VCLXAccessibleTextComponent +class VCLXAccessibleFixedText final + : public cppu::ImplInheritanceHelper<VCLXAccessibleTextComponent, + css::accessibility::XAccessible> { virtual ~VCLXAccessibleFixedText() override = default; virtual void FillAccessibleStateSet(sal_Int64& rStateSet) override; public: - using VCLXAccessibleTextComponent::VCLXAccessibleTextComponent; + VCLXAccessibleFixedText(vcl::Window* pWindow); + + // XAccessible + virtual css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> + SAL_CALL getAccessibleContext() override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() override; diff --git a/vcl/source/accessibility/acc_factory.cxx b/vcl/source/accessibility/acc_factory.cxx index 116e6c5656b0..7e69e8b231be 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(FixedText* pFixedText) -{ - return new VCLXAccessibleFixedText(pFixedText); -} - Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(ScrollBar* pScrollBar) { return new VCLXAccessibleScrollBar(pScrollBar); diff --git a/vcl/source/accessibility/vclxaccessiblefixedtext.cxx b/vcl/source/accessibility/vclxaccessiblefixedtext.cxx index 9431a4e9b873..5c94c1f533df 100644 --- a/vcl/source/accessibility/vclxaccessiblefixedtext.cxx +++ b/vcl/source/accessibility/vclxaccessiblefixedtext.cxx @@ -19,6 +19,7 @@ #include <accessibility/vclxaccessiblefixedtext.hxx> +#include <comphelper/accessiblecontexthelper.hxx> #include <vcl/window.hxx> #include <com/sun/star/accessibility/AccessibleStateType.hpp> @@ -26,7 +27,10 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::accessibility; -// VCLXAccessibleFixedText +VCLXAccessibleFixedText::VCLXAccessibleFixedText(vcl::Window* pWindow) + : ImplInheritanceHelper(pWindow) +{ +} void VCLXAccessibleFixedText::FillAccessibleStateSet(sal_Int64& rStateSet) { @@ -36,6 +40,15 @@ void VCLXAccessibleFixedText::FillAccessibleStateSet(sal_Int64& rStateSet) rStateSet |= AccessibleStateType::MULTI_LINE; } +// XAccessible + +css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> +VCLXAccessibleFixedText::getAccessibleContext() +{ + comphelper::OExternalLockGuard aGuard(this); + return this; +} + // XServiceInfo OUString VCLXAccessibleFixedText::getImplementationName() diff --git a/vcl/source/control/fixed.cxx b/vcl/source/control/fixed.cxx index 2295b17e0016..fcfbdccfa930 100644 --- a/vcl/source/control/fixed.cxx +++ b/vcl/source/control/fixed.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <accessibility/vclxaccessiblefixedtext.hxx> + #include <vcl/cvtgrf.hxx> #include <vcl/decoview.hxx> #include <vcl/event.hxx> @@ -162,6 +164,11 @@ void FixedText::ImplDraw(OutputDevice* pDev, SystemTextColorFlags nSystemTextCol bFillLayout ? &mxLayoutData->m_aDisplayText : nullptr); } +css::uno::Reference<css::accessibility::XAccessible> FixedText::CreateAccessible() +{ + return new VCLXAccessibleFixedText(this); +} + void FixedText::ApplySettings(vcl::RenderContext& rRenderContext) { Control::ApplySettings(rRenderContext); commit 14eff4a61f39b7145222595668d850883f8665f8 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu May 22 15:18:20 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Mon May 26 07:33:22 2025 +0200 vcl a11y: Let FixedHyperlink create its accessible directly This is the FixedHyperlink 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: I2b4f1bd25b4f925bdc7d51948057fbc66c718404 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185674 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 5c53b539f045..156abdb47134 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -234,9 +234,6 @@ private: void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleContext > - CreateAccessibleContext() override; - public: VCLXFixedHyperlink(); virtual ~VCLXFixedHyperlink() override; diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index 182541e0624f..c32325ea5ee8 100644 --- a/include/vcl/accessiblefactory.hxx +++ b/include/vcl/accessiblefactory.hxx @@ -65,8 +65,6 @@ public: static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(FixedText* pFixedText); static css::uno::Reference<css::accessibility::XAccessibleContext> - createAccessibleContext(FixedHyperlink* pFixedHyperlink); - static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(ScrollBar* pScrollBar); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(Edit* pEdit); diff --git a/include/vcl/toolkit/fixedhyper.hxx b/include/vcl/toolkit/fixedhyper.hxx index 1c199d501ae3..b458571c08d1 100644 --- a/include/vcl/toolkit/fixedhyper.hxx +++ b/include/vcl/toolkit/fixedhyper.hxx @@ -71,6 +71,8 @@ public: */ FixedHyperlink( vcl::Window* pParent, WinBits nWinStyle = 0 ); + virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override; + /** overwrites Window::GetFocus(). Changes the color of the text and shows a focus rectangle. diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index b71ff78a2935..2806e7fe7326 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -2759,12 +2759,6 @@ void VCLXFixedHyperlink::ProcessWindowEvent( const VclWindowEvent& rVclWindowEve } } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXFixedHyperlink::CreateAccessibleContext() -{ - VclPtr<FixedHyperlink> pFixedHyperlink = GetAs<FixedHyperlink>(); - return AccessibleFactory::createAccessibleContext(pFixedHyperlink); -} - void VCLXFixedHyperlink::setText( const OUString& Text ) { SolarMutexGuard aGuard; diff --git a/vcl/inc/accessibility/vclxaccessiblefixedhyperlink.hxx b/vcl/inc/accessibility/vclxaccessiblefixedhyperlink.hxx index be3779248547..3ade32c00cec 100644 --- a/vcl/inc/accessibility/vclxaccessiblefixedhyperlink.hxx +++ b/vcl/inc/accessibility/vclxaccessiblefixedhyperlink.hxx @@ -21,12 +21,18 @@ #include <accessibility/vclxaccessibletextcomponent.hxx> -class VCLXAccessibleFixedHyperlink final : public VCLXAccessibleTextComponent +class VCLXAccessibleFixedHyperlink final + : public cppu::ImplInheritanceHelper<VCLXAccessibleTextComponent, + css::accessibility::XAccessible> { virtual ~VCLXAccessibleFixedHyperlink() override = default; public: - using VCLXAccessibleTextComponent::VCLXAccessibleTextComponent; + VCLXAccessibleFixedHyperlink(vcl::Window* pWindow); + + // XAccessible + virtual css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> + SAL_CALL getAccessibleContext() override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() override; diff --git a/vcl/source/accessibility/acc_factory.cxx b/vcl/source/accessibility/acc_factory.cxx index 2402a799cadc..116e6c5656b0 100644 --- a/vcl/source/accessibility/acc_factory.cxx +++ b/vcl/source/accessibility/acc_factory.cxx @@ -68,11 +68,6 @@ Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(Fixed return new VCLXAccessibleFixedText(pFixedText); } -Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(FixedHyperlink* pFixedHyperlink) -{ - return new VCLXAccessibleFixedHyperlink(pFixedHyperlink); -} - Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(ScrollBar* pScrollBar) { return new VCLXAccessibleScrollBar(pScrollBar); diff --git a/vcl/source/accessibility/vclxaccessiblefixedhyperlink.cxx b/vcl/source/accessibility/vclxaccessiblefixedhyperlink.cxx index 60bb04abf63a..b0442e404ba9 100644 --- a/vcl/source/accessibility/vclxaccessiblefixedhyperlink.cxx +++ b/vcl/source/accessibility/vclxaccessiblefixedhyperlink.cxx @@ -19,9 +19,23 @@ #include <accessibility/vclxaccessiblefixedhyperlink.hxx> +#include <comphelper/accessiblecontexthelper.hxx> + using namespace ::com::sun::star; -// VCLXAccessibleFixedHyperlink +VCLXAccessibleFixedHyperlink::VCLXAccessibleFixedHyperlink(vcl::Window* pWindow) + : ImplInheritanceHelper(pWindow) +{ +} + +// XAccessible + +css::uno::Reference<com::sun::star::accessibility::XAccessibleContext> +VCLXAccessibleFixedHyperlink::getAccessibleContext() +{ + comphelper::OExternalLockGuard aGuard(this); + return this; +} // XServiceInfo diff --git a/vcl/source/control/fixedhyper.cxx b/vcl/source/control/fixedhyper.cxx index 5c8e9e4a29d1..a80eef6c7603 100644 --- a/vcl/source/control/fixedhyper.cxx +++ b/vcl/source/control/fixedhyper.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <accessibility/vclxaccessiblefixedhyperlink.hxx> + #include <vcl/event.hxx> #include <vcl/toolkit/fixedhyper.hxx> #include <vcl/settings.hxx> @@ -81,6 +83,11 @@ bool FixedHyperlink::ImplIsOverText(Point aPosition) const return bIsOver; } +css::uno::Reference<css::accessibility::XAccessible> FixedHyperlink::CreateAccessible() +{ + return new VCLXAccessibleFixedHyperlink(this); +} + void FixedHyperlink::MouseMove( const MouseEvent& rMEvt ) { // changes the pointer if the control is enabled and the mouse is over the text. commit 528335432757d685a2d69a51488a59eae2198f9b Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Thu May 22 13:44:17 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Mon May 26 07:33:16 2025 +0200 vcl a11y: Let ListBox create its accessible directly This is the ListBox 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: Ife6382fe72b245b5df2742a17000cf8bb29112b5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185673 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 3747cff5ab14..5c53b539f045 100644 --- a/include/toolkit/awt/vclxwindows.hxx +++ b/include/toolkit/awt/vclxwindows.hxx @@ -576,8 +576,6 @@ private: ItemListenerMultiplexer maItemListeners; virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleContext > - CreateAccessibleContext() override; void ImplCallItemListeners(); public: diff --git a/include/vcl/accessiblefactory.hxx b/include/vcl/accessiblefactory.hxx index 27b6d35ac6ac..182541e0624f 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(ListBox* pListBox); static css::uno::Reference<css::accessibility::XAccessibleContext> createAccessibleContext(FixedText* pFixedText); static css::uno::Reference<css::accessibility::XAccessibleContext> diff --git a/include/vcl/toolkit/lstbox.hxx b/include/vcl/toolkit/lstbox.hxx index 406c327faa37..fedc182ee46f 100644 --- a/include/vcl/toolkit/lstbox.hxx +++ b/include/vcl/toolkit/lstbox.hxx @@ -123,6 +123,8 @@ public: SAL_DLLPRIVATE virtual ~ListBox() override; SAL_DLLPRIVATE virtual void dispose() override; + virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override; + SAL_DLLPRIVATE virtual void ApplySettings(vcl::RenderContext& rRenderContext) override; SAL_DLLPRIVATE virtual void Draw( OutputDevice* pDev, const Point& rPos, SystemTextColorFlags nFlags ) override; SAL_DLLPRIVATE virtual void Resize() override; diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index 87a943de80da..b71ff78a2935 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -1776,14 +1776,6 @@ void VCLXListBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) } } -css::uno::Reference< css::accessibility::XAccessibleContext > VCLXListBox::CreateAccessibleContext() -{ - SolarMutexGuard aGuard; - - VclPtr<ListBox> pListBox = GetAs<ListBox>(); - return AccessibleFactory::createAccessibleContext(pListBox); -} - void VCLXListBox::setProperty( const OUString& PropertyName, const css::uno::Any& Value) { SolarMutexGuard aGuard; diff --git a/vcl/source/accessibility/acc_factory.cxx b/vcl/source/accessibility/acc_factory.cxx index db1bbc8519d5..2402a799cadc 100644 --- a/vcl/source/accessibility/acc_factory.cxx +++ b/vcl/source/accessibility/acc_factory.cxx @@ -63,18 +63,6 @@ bool hasFloatingChild(vcl::Window *pWindow) } }; -Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(ListBox* pListBox) -{ - bool bIsDropDownBox = false; - if (pListBox) - bIsDropDownBox = ((pListBox->GetStyle() & WB_DROPDOWN) == WB_DROPDOWN); - - if ( bIsDropDownBox ) - return new VCLXAccessibleDropDownListBox(pListBox); - else - return new VCLXAccessibleListBox(pListBox); -} - Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext(FixedText* pFixedText) { return new VCLXAccessibleFixedText(pFixedText); diff --git a/vcl/source/control/listbox.cxx b/vcl/source/control/listbox.cxx index 5c491190738b..6c00d62f3a93 100644 --- a/vcl/source/control/listbox.cxx +++ b/vcl/source/control/listbox.cxx @@ -25,6 +25,8 @@ #include <vcl/uitest/uiobject.hxx> #include <sal/log.hxx> +#include <accessibility/vclxaccessibledropdownlistbox.hxx> +#include <accessibility/vclxaccessiblelistbox.hxx> #include <svdata.hxx> #include <listbox.hxx> #include <dndeventdispatcher.hxx> @@ -315,6 +317,15 @@ void ListBox::ToggleDropDown() } } +css::uno::Reference<css::accessibility::XAccessible> ListBox::CreateAccessible() +{ + const bool bIsDropDownBox = (GetStyle() & WB_DROPDOWN) == WB_DROPDOWN; + if (bIsDropDownBox) + return new VCLXAccessibleDropDownListBox(this); + else + return new VCLXAccessibleListBox(this); +} + void ListBox::ApplySettings(vcl::RenderContext& rRenderContext) { rRenderContext.SetBackground();