diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibility.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibility.mm | 10 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm | 4 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.h b/src/plugins/platforms/cocoa/qcocoaaccessibility.h index c9fcbe9fc5..cad90b33f1 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibility.h +++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.h @@ -75,7 +75,7 @@ bool shouldBeIgnored(QAccessibleInterface *interface); NSArray *unignoredChildren(QAccessibleInterface *interface); NSString *getTranslatedAction(const QString &qtAction); NSMutableArray *createTranslatedActionsList(const QStringList &qtActions); -QString translateAction(NSString *nsAction); +QString translateAction(NSString *nsAction, QAccessibleInterface *interface); bool hasValueAttribute(QAccessibleInterface *interface); id getValueAttribute(QAccessibleInterface *interface); 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(); diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm index b91831bad8..7349236455 100644 --- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm +++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm @@ -500,7 +500,7 @@ static void convertLineOffset(QAccessibleTextInterface *text, int &line, int &of QAccessibleInterface *iface = QAccessible::accessibleInterface(axid); if (!iface) return nil; // FIXME is that the right return type?? - QString qtAction = QCocoaAccessible::translateAction(action); + QString qtAction = QCocoaAccessible::translateAction(action, iface); QString description; // Return a description from the action interface if this action is not known to the OS. if (qtAction.isEmpty()) { @@ -517,7 +517,7 @@ static void convertLineOffset(QAccessibleTextInterface *text, int &line, int &of - (void)accessibilityPerformAction:(NSString *)action { QAccessibleInterface *iface = QAccessible::accessibleInterface(axid); if (iface) { - const QString qtAction = QCocoaAccessible::translateAction(action); + const QString qtAction = QCocoaAccessible::translateAction(action, iface); QAccessibleBridgeUtils::performEffectiveAction(iface, qtAction); } } |