summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
diff options
context:
space:
mode:
authorMorten Johan Sorvig <morten.sorvig@digia.com>2012-11-01 12:59:11 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-15 16:03:57 +0100
commit65866bcff560abcab329958ce1980284a81ced94 (patch)
treea481f6854838cc0111992c59aaecbc3d8ee536e2 /src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
parent2ca6606dca44253df49f4805028a9878e4fa0237 (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.mm21
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;