From d9697df4e0bfee651f06290fa0851255e80d7987 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 18 Mar 2014 10:52:41 +0100 Subject: [PATCH] Accessibility Mac: Implement setting focus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [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 --- .../platforms/cocoa/qcocoaaccessibilityelement.mm | 10 ++++++++-- 1 file 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()); } }