diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-18 10:52:41 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 12:49:48 +0100 |
commit | d9697df4e0bfee651f06290fa0851255e80d7987 (patch) | |
tree | 09c75088e016397dffca9f47455296e5789cd233 /src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | |
parent | b8c96f2eb9f0cb1a5ffa8bfd3ab89f53f8e8badd (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>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | 10 |
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()); } } |