| @@ -722,7 +722,8 @@ public: | |||||
| explicit ButtonAccessibilityHandler (Button& buttonToWrap, AccessibilityRole roleIn) | explicit ButtonAccessibilityHandler (Button& buttonToWrap, AccessibilityRole roleIn) | ||||
| : AccessibilityHandler (buttonToWrap, | : AccessibilityHandler (buttonToWrap, | ||||
| isRadioButton (buttonToWrap) ? AccessibilityRole::radioButton : roleIn, | isRadioButton (buttonToWrap) ? AccessibilityRole::radioButton : roleIn, | ||||
| getAccessibilityActions (buttonToWrap)), | |||||
| getAccessibilityActions (buttonToWrap), | |||||
| getAccessibilityInterfaces (buttonToWrap)), | |||||
| button (buttonToWrap) | button (buttonToWrap) | ||||
| { | { | ||||
| } | } | ||||
| @@ -755,6 +756,25 @@ public: | |||||
| String getHelp() const override { return button.getTooltip(); } | String getHelp() const override { return button.getTooltip(); } | ||||
| private: | private: | ||||
| class ButtonValueInterface : public AccessibilityTextValueInterface | |||||
| { | |||||
| public: | |||||
| explicit ButtonValueInterface (Button& buttonToWrap) | |||||
| : button (buttonToWrap) | |||||
| { | |||||
| } | |||||
| bool isReadOnly() const override { return true; } | |||||
| String getCurrentValueAsString() const override { return button.getToggleState() ? "On" : "Off"; } | |||||
| void setValueAsString (const String&) override {} | |||||
| private: | |||||
| Button& button; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonValueInterface) | |||||
| }; | |||||
| static bool isRadioButton (const Button& button) noexcept | static bool isRadioButton (const Button& button) noexcept | ||||
| { | { | ||||
| return button.getRadioGroupId() != 0; | return button.getRadioGroupId() != 0; | ||||
| @@ -772,6 +792,14 @@ private: | |||||
| return actions; | return actions; | ||||
| } | } | ||||
| static Interfaces getAccessibilityInterfaces (Button& button) | |||||
| { | |||||
| if (button.isToggleable()) | |||||
| return { std::make_unique<ButtonValueInterface> (button) }; | |||||
| return {}; | |||||
| } | |||||
| Button& button; | Button& button; | ||||
| //============================================================================== | //============================================================================== | ||||