vcl/inc/osx/a11ywrapper.h | 2 ++ vcl/osx/a11ywrapper.mm | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+)
New commits: commit 43f0022fcaed2d9d1b1b3707173acd562c7f0ebe Author: Michael Weghorn <[email protected]> AuthorDate: Wed Jul 17 13:31:17 2024 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Thu Jul 18 06:52:46 2024 +0200 tdf#155447 macOS a11y: Report accessibilityIdentifier Implement `accessibilityIdentifier` [1] for macOS/NSAccessibility by retrieving the accessible ID via `XAccessibleContext2::getAccessibleId` if that interface is implemented. This is the macOS equivalent of commit c64b823b74cbd3063d6e87643bd68ea5343b2f54 Author: Michael Weghorn <[email protected]> Date: Tue Jul 16 13:57:41 2024 +0200 tdf#155447 qt a11y: Report accessible ID [1] https://developer.apple.com/documentation/appkit/nsaccessibilityprotocol/1527792-accessibilityidentifier Change-Id: I43c40f5309467ddb00911297fadb6716500c2dcb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170624 Tested-by: Jenkins Reviewed-by: Patrick Luby <[email protected]> Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/inc/osx/a11ywrapper.h b/vcl/inc/osx/a11ywrapper.h index 48fdd8e2a582..c3360f58c24e 100644 --- a/vcl/inc/osx/a11ywrapper.h +++ b/vcl/inc/osx/a11ywrapper.h @@ -22,6 +22,7 @@ #include "osxvcltypes.h" #include <com/sun/star/accessibility/XAccessibleAction.hpp> #include <com/sun/star/accessibility/XAccessibleContext.hpp> +#include <com/sun/star/accessibility/XAccessibleContext2.hpp> #include <com/sun/star/accessibility/XAccessibleComponent.hpp> #include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp> #include <com/sun/star/accessibility/XAccessibleSelection.hpp> @@ -38,6 +39,7 @@ struct ReferenceWrapper { css::uno::Reference < css::accessibility::XAccessibleAction > rAccessibleAction; css::uno::Reference < css::accessibility::XAccessibleContext > rAccessibleContext; + css::uno::Reference < css::accessibility::XAccessibleContext2 > rAccessibleContext2; css::uno::Reference < css::accessibility::XAccessibleComponent > rAccessibleComponent; css::uno::Reference < css::accessibility::XAccessibleExtendedComponent > rAccessibleExtendedComponent; css::uno::Reference < css::accessibility::XAccessibleSelection > rAccessibleSelection; diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm index 365aa99ca816..e05e951e81c9 100644 --- a/vcl/osx/a11ywrapper.mm +++ b/vcl/osx/a11ywrapper.mm @@ -108,6 +108,8 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) { mIsDisposed = NO; // Querying all supported interfaces try { + // XAccessibleContext2 + maReferenceWrapper.rAccessibleContext2.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleComponent maReferenceWrapper.rAccessibleComponent.set( rxAccessibleContext, UNO_QUERY ); // XAccessibleExtendedComponent @@ -456,6 +458,14 @@ static std::ostream &operator<<(std::ostream &s, NSObject *obj) { return [ CreateNSString ( [ self accessibleContext ] -> getAccessibleDescription() ) autorelease ]; } +-(id)identifierAttribute { + if ([ self accessibleContext2]) { + return [ CreateNSString ( [ self accessibleContext2 ] -> getAccessibleId() ) autorelease ]; + } else { + return nil; + } +} + -(id)roleDescriptionAttribute { if ( mActsAsRadioGroup ) { return [ AquaA11yRoleHelper getRoleDescriptionFrom: NSAccessibilityRadioGroupRole with: @"" ]; @@ -1192,6 +1202,10 @@ static Reference < XAccessibleContext > hitTestRunner ( css::awt::Point point, return maReferenceWrapper.rAccessibleContext.get(); } +-(XAccessibleContext2 *)accessibleContext2 { + return maReferenceWrapper.rAccessibleContext2.get(); +} + -(XAccessibleComponent *)accessibleComponent { return maReferenceWrapper.rAccessibleComponent.get(); } @@ -1357,6 +1371,12 @@ static Reference < XAccessibleContext > hitTestRunner ( css::awt::Point point, return [ self accessibilityAttributeValue: NSAccessibilityHelpAttribute ]; } + +- (NSString *) accessibilityIdentifier +{ + return [ self accessibilityAttributeValue: NSAccessibilityIdentifierAttribute ]; +} + - (BOOL)isAccessibilityExpanded { NSNumber *pNumber = [ self accessibilityAttributeValue: NSAccessibilityExpandedAttribute ];
