From 8f2a2ddeea0652bf3a854a6aa9f8dffa77abb411 Mon Sep 17 00:00:00 2001 From: attila Date: Thu, 12 Oct 2023 22:04:23 +0200 Subject: [PATCH] MacOS: Accessibility: Fix ToggleButton state reporting The accessibilityValue method of the AccessibilityCheckBox and AccessibilityRadioButton protocols is required to return a boolean valued NSNumber. --- .../native/accessibility/juce_Accessibility_mac.mm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm b/modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm index 6a6c9f6c56..8175e94d38 100644 --- a/modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm +++ b/modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm @@ -269,10 +269,18 @@ private: { if (auto* handler = getHandler (self)) { - if (handler->getCurrentState().isCheckable()) - return juceStringToNS (handler->getCurrentState().isChecked() ? TRANS ("On") : TRANS ("Off")); + if (! handler->getCurrentState().isCheckable()) + return getAccessibilityValueFromInterfaces (*handler); - return getAccessibilityValueFromInterfaces (*handler); + const auto checked = handler->getCurrentState().isChecked(); + + if ( handler->getRole() == AccessibilityRole::toggleButton + || handler->getRole() == AccessibilityRole::radioButton) + { + return checked ? @YES : @NO; + } + + return juceStringToNS (checked ? TRANS ("On") : TRANS ("Off")); } return nil;