summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-03-18 10:52:41 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-20 12:49:48 +0100
commitd9697df4e0bfee651f06290fa0851255e80d7987 (patch)
tree09c75088e016397dffca9f47455296e5789cd233
parentb8c96f2eb9f0cb1a5ffa8bfd3ab89f53f8e8badd (diff)
Accessibility Mac: Implement setting focus
[ChangeLog][QtGui][Accessibility] Allow assistive apps such as VoiceOver to set the focus on widgets and controls. Change-Id: I657bf7d827c5e5293cfd628dbb6b8f0592a84f24 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
index d32170ab01..8b52c5eeff 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
@@ -268,7 +268,10 @@
- (BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
- return NO; // YES to handle keyboard input
+ QAccessibleInterface *iface = QAccessible::accessibleInterface(axid);
+ if (!iface)
+ return nil;
+ return iface->state().focusable ? YES : NO;
} else {
return NO;
}
@@ -277,7 +280,10 @@
- (void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute {
Q_UNUSED(value);
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) {
-
+ QAccessibleInterface *iface = QAccessible::accessibleInterface(axid);
+ if (!iface || !iface->actionInterface())
+ return;
+ iface->actionInterface()->doAction(QAccessibleActionInterface::setFocusAction());
}
}