include/vcl/menu.hxx | 3 -- vcl/inc/accessibility/accessiblemenubasecomponent.hxx | 2 - vcl/source/accessibility/accessiblemenubasecomponent.cxx | 2 - vcl/source/window/menu.cxx | 16 +++++++++------ 4 files changed, 13 insertions(+), 10 deletions(-)
New commits: commit ba9ecfc57aa1541ac6f6f0c86a48e46532d7653e Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Jul 22 16:02:51 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Jul 23 08:00:16 2025 +0200 vcl a11y: Return OAccessible in Menu::GetAccessible The accessible is always an OAccessible, so always return that more specific type instead of the abstract XAccessible interface. Change-Id: Iecbc075ba757e2aeba5fee474ea10972d0ef22c6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188179 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx index 3a4ef3b32faa..82e88f8af36a 100644 --- a/include/vcl/menu.hxx +++ b/include/vcl/menu.hxx @@ -56,7 +56,6 @@ struct SystemMenuData; enum class VclEventId; namespace com::sun::star::awt { class XPopupMenu; } -namespace com::sun::star::accessibility { class XAccessible; } namespace vcl { @@ -368,7 +367,7 @@ public: // returns the bounding rectangle for an item at pos nItemPos tools::Rectangle GetBoundingRectangle( sal_uInt16 nItemPos ) const; - css::uno::Reference<css::accessibility::XAccessible> GetAccessible(); + rtl::Reference<comphelper::OAccessible> GetAccessible(); void SetAccessible(const rtl::Reference<comphelper::OAccessible>& rAccessible); // gets the activation key of the specified item diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx index 76dad48fc003..1b24ea96ca09 100644 --- a/vcl/source/window/menu.cxx +++ b/vcl/source/window/menu.cxx @@ -1310,7 +1310,7 @@ rtl::Reference<comphelper::OAccessible> Menu::CreateAccessible() return xAccessible; } -css::uno::Reference<css::accessibility::XAccessible> Menu::GetAccessible() +rtl::Reference<comphelper::OAccessible> Menu::GetAccessible() { // Since PopupMenu are sometimes shared by different instances of MenuBar, the mpAccessible member gets // overwritten and may contain a disposed object when the initial menubar gets set again. So use the @@ -1322,12 +1322,16 @@ css::uno::Reference<css::accessibility::XAccessible> Menu::GetAccessible() sal_uInt16 nItemId = pStartedFrom->GetItemId( i ); if ( static_cast< Menu* >( pStartedFrom->GetPopupMenu( nItemId ) ) == this ) { - css::uno::Reference<css::accessibility::XAccessible> xParent = pStartedFrom->GetAccessible(); - if ( xParent.is() ) + rtl::Reference<comphelper::OAccessible> pParent = pStartedFrom->GetAccessible(); + if (pParent.is()) { - css::uno::Reference<css::accessibility::XAccessibleContext> xParentContext( xParent->getAccessibleContext() ); - if (xParentContext.is()) - return xParentContext->getAccessibleChild( i ); + css::uno::Reference<css::accessibility::XAccessible> xAcc = pParent->getAccessibleChild(i); + if (!xAcc) + return {}; + + rtl::Reference<comphelper::OAccessible> pAccessible = dynamic_cast<comphelper::OAccessible*>(xAcc.get()); + assert(pAccessible.is() && "Accessible is not an OAccessible"); + return pAccessible; } } } commit ab681f1922d0b043fc6544d932da4254a7113f9a Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Tue Jul 22 16:02:06 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Jul 23 08:00:09 2025 +0200 vcl a11y: Return OAccessible in OAccessibleMenuBaseComponent::GetChild Change-Id: Iad66cd0269331d088f72747940c81b03859ac4cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188178 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/vcl/inc/accessibility/accessiblemenubasecomponent.hxx b/vcl/inc/accessibility/accessiblemenubasecomponent.hxx index ff37c596dfcb..7eba34134d08 100644 --- a/vcl/inc/accessibility/accessiblemenubasecomponent.hxx +++ b/vcl/inc/accessibility/accessiblemenubasecomponent.hxx @@ -74,7 +74,7 @@ protected: sal_Int64 GetChildCount() const; - css::uno::Reference< css::accessibility::XAccessible > GetChild( sal_Int64 i ); + rtl::Reference<comphelper::OAccessible> GetChild(sal_Int64 i); css::uno::Reference< css::accessibility::XAccessible > GetChildAt( const css::awt::Point& rPoint ); void InsertChild( sal_Int32 i ); diff --git a/vcl/source/accessibility/accessiblemenubasecomponent.cxx b/vcl/source/accessibility/accessiblemenubasecomponent.cxx index 1d700e20b062..361106cdbb01 100644 --- a/vcl/source/accessibility/accessiblemenubasecomponent.cxx +++ b/vcl/source/accessibility/accessiblemenubasecomponent.cxx @@ -294,7 +294,7 @@ sal_Int64 OAccessibleMenuBaseComponent::GetChildCount() const } -Reference< XAccessible > OAccessibleMenuBaseComponent::GetChild( sal_Int64 i ) +rtl::Reference<comphelper::OAccessible> OAccessibleMenuBaseComponent::GetChild( sal_Int64 i ) { rtl::Reference< OAccessibleMenuItemComponent > xChild = m_aAccessibleChildren[i]; if ( !xChild.is() )