diff options
author | Boris Dušek <me@dusek.me> | 2015-03-08 16:21:35 +0100 |
---|---|---|
committer | Boris Dušek <me@dusek.me> | 2015-03-13 15:54:44 +0000 |
commit | 62bcb1f4ba15646ac6430a20c5be22d7a16932e6 (patch) | |
tree | 9a18eefc5573d3ea0d0f699053f506d35455e0bf /src/plugins/platforms/cocoa/qcocoaaccessibility.mm | |
parent | 3994ea1979249e0bf76eb38c89ff3d3dfb1d90b5 (diff) |
OS X Accessibility: Make checkboxes etc. checkable with VoiceOver
NSAccessibility has no explicit analog for
QAccessibleActionInterface::toggleAction(), checking checkboxes/radio
buttons is handled by NSAccessibilityPressAction. So ensure exposing
the action properly on OS X so that VoiceOver users can check/uncheck
checkboxes, select radio buttons etc.
Change-Id: I54b47515cc4882ecf0544c7351bd3c9046023a44
Task-number: QTBUG-44852
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaaccessibility.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibility.mm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm index a42c877fc6..e13a9c2b19 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm @@ -282,6 +282,8 @@ NSString *getTranslatedAction(const QString &qtAction) return NSAccessibilityShowMenuAction; else if (qtAction == QAccessibleActionInterface::setFocusAction()) // Not 100% sure on this one return NSAccessibilityRaiseAction; + else if (qtAction == QAccessibleActionInterface::toggleAction()) + return NSAccessibilityPressAction; // Not translated: // @@ -303,11 +305,13 @@ NSString *getTranslatedAction(const QString &qtAction) Translates between a Mac action constant and a QAccessibleActionInterface action Returns an empty QString if there is no Qt predefined equivalent. */ -QString translateAction(NSString *nsAction) +QString translateAction(NSString *nsAction, QAccessibleInterface *interface) { - if ([nsAction compare: NSAccessibilityPressAction] == NSOrderedSame) + if ([nsAction compare: NSAccessibilityPressAction] == NSOrderedSame) { + if (interface->role() == QAccessible::CheckBox || interface->role() == QAccessible::RadioButton) + return QAccessibleActionInterface::toggleAction(); return QAccessibleActionInterface::pressAction(); - else if ([nsAction compare: NSAccessibilityIncrementAction] == NSOrderedSame) + } else if ([nsAction compare: NSAccessibilityIncrementAction] == NSOrderedSame) return QAccessibleActionInterface::increaseAction(); else if ([nsAction compare: NSAccessibilityDecrementAction] == NSOrderedSame) return QAccessibleActionInterface::decreaseAction(); |