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 ];

Reply via email to