diff options
author | Morten Johan Sorvig <morten.sorvig@digia.com> | 2012-11-01 12:59:11 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-15 16:03:57 +0100 |
commit | 65866bcff560abcab329958ce1980284a81ced94 (patch) | |
tree | a481f6854838cc0111992c59aaecbc3d8ee536e2 /src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | |
parent | 2ca6606dca44253df49f4805028a9878e4fa0237 (diff) |
Implement EditableText accessibility for Mac.
Change-Id: Ibe03975bafc5a6a420b3bd69dfaa93dbf65c9958
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm index c39290357e..cc1d393029 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm @@ -96,9 +96,9 @@ static QAccessibleInterface *acast(void *ptr) // attributes - (NSArray *)accessibilityAttributeNames { - static NSArray *attributes = nil; - if (attributes == nil) { - attributes = [[NSArray alloc] initWithObjects: + static NSArray *defaultAttributes = nil; + if (defaultAttributes == nil) { + defaultAttributes = [[NSArray alloc] initWithObjects: NSAccessibilityRoleAttribute, NSAccessibilityRoleDescriptionAttribute, NSAccessibilityChildrenAttribute, @@ -112,6 +112,14 @@ static QAccessibleInterface *acast(void *ptr) NSAccessibilityEnabledAttribute, nil]; } + + NSMutableArray *attributes = [[NSMutableArray alloc] initWithCapacity : [defaultAttributes count]]; + [attributes addObjectsFromArray : defaultAttributes]; + + if (QCocoaAccessible::hasValueAttribute(acast(accessibleInterface))) { + [attributes addObject : NSAccessibilityValueAttribute]; + } + return attributes; } @@ -153,6 +161,13 @@ static QAccessibleInterface *acast(void *ptr) return QCFString::toNSString(acast(accessibleInterface)->text(QAccessible::Name)); } else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) { return [NSNumber numberWithBool:!acast(accessibleInterface)->state().disabled]; + } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { + // VoiceOver asks for the value attribute for all elements. Return nil + // if we don't want the element to have a value attribute. + if (!QCocoaAccessible::hasValueAttribute(acast(accessibleInterface))) + return nil; + + return QCocoaAccessible::getValueAttribute(acast(accessibleInterface)); } return nil; |