diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-10-16 17:58:54 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2014-10-25 18:30:08 +0200 |
commit | 18a538ed40d5419b7f9edf5e42730113447ed527 (patch) | |
tree | dfbb8c08d4d1abeca7027d37fd55afa418a85ca3 /src/plugins/platforms/cocoa | |
parent | e859de3fb5203579fbb4a6774bcdf59dc00404f9 (diff) |
Add searchEdit as accessible state
The search state is used by VoiceOver on iOS to announce a search field.
Change-Id: I464125827dbbf275daf38104e26e9591bb23365a
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibility.h | 1 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibility.mm | 17 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | 3 |
3 files changed, 18 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.h b/src/plugins/platforms/cocoa/qcocoaaccessibility.h index 96dbd23695..3d1c95a0b4 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibility.h +++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.h @@ -70,6 +70,7 @@ namespace QCocoaAccessible { */ NSString *macRole(QAccessibleInterface *interface); +NSString *macSubrole(QAccessibleInterface *interface); bool shouldBeIgnored(QAccessibleInterface *interface); NSArray *unignoredChildren(QAccessibleInterface *interface); NSString *getTranslatedAction(const QString &qtAction); diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm index 1ade985b79..00baeddb39 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm @@ -162,7 +162,7 @@ static void populateRoleMap() } /* - Returns a Mac accessibility role for the given interface, or + Returns a Cocoa accessibility role for the given interface, or NSAccessibilityUnknownRole if no role mapping is found. */ NSString *macRole(QAccessibleInterface *interface) @@ -190,13 +190,24 @@ NSString *macRole(QAccessibleInterface *interface) } /* - Mac accessibility supports ignoring elements, which means that + Returns a Cocoa sub role for the given interface. +*/ +NSString *macSubrole(QAccessibleInterface *interface) +{ + QAccessible::State s = interface->state(); + if (s.searchEdit) + return NSAccessibilitySearchFieldSubrole; + return nil; +} + +/* + Cocoa accessibility supports ignoring elements, which means that the elements are still present in the accessibility tree but is not used by the screen reader. */ bool shouldBeIgnored(QAccessibleInterface *interface) { - // Mac accessibility does not have an attribute that corresponds to the Invisible/Offscreen + // Cocoa accessibility does not have an attribute that corresponds to the Invisible/Offscreen // state. Ignore interfaces with those flags set. const QAccessible::State state = interface->state(); if (state.invisible || diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm index 9f803e411d..dd76852b62 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm @@ -135,6 +135,7 @@ defaultAttributes = [[NSArray alloc] initWithObjects: NSAccessibilityRoleAttribute, NSAccessibilityRoleDescriptionAttribute, + NSAccessibilitySubroleAttribute, NSAccessibilityChildrenAttribute, NSAccessibilityFocusedAttribute, NSAccessibilityParentAttribute, @@ -221,6 +222,8 @@ if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) { return role; + } else if ([attribute isEqualToString:NSAccessibilitySubroleAttribute]) { + return QCocoaAccessible::macSubrole(iface); } else if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) { return NSAccessibilityRoleDescription(role, nil); } else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { |