summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
diff options
context:
space:
mode:
authorBoris Dušek <me@dusek.me>2015-03-17 23:10:07 +0100
committerBoris Dušek <me@dusek.me>2015-03-25 09:48:43 +0000
commit76c94be4e77bfef6ee3642cb175ff34ba6c694db (patch)
treedb08527e89cdb89a64505d2772160347942c8b4e /src/plugins/platforms/cocoa/qcocoaaccessibility.mm
parentc37f2e8e45a48ed3912ecaf3d69ccd71691fd2b0 (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: Idc8b048de2313a3e875a929516baf3dded9c68cc 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.mm10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
index 0107d7a673..03f585d19d 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
@@ -284,6 +284,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:
//
@@ -305,11 +307,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();