mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Accessibility: Override Accessibility::getHelp() for JUCE widgets that support tooltips
This commit is contained in:
parent
422c8f8114
commit
c559d31e90
9 changed files with 99 additions and 23 deletions
|
|
@ -662,6 +662,7 @@ public:
|
|||
}
|
||||
|
||||
String getTitle() const override { return comboBox.getText(); }
|
||||
String getHelp() const override { return comboBox.getTooltip(); }
|
||||
|
||||
private:
|
||||
static AccessibilityActions getAccessibilityActions (ComboBox& comboBox)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,25 @@ void ImageComponent::paint (Graphics& g)
|
|||
//==============================================================================
|
||||
std::unique_ptr<AccessibilityHandler> ImageComponent::createAccessibilityHandler()
|
||||
{
|
||||
return std::make_unique<AccessibilityHandler> (*this, AccessibilityRole::image);
|
||||
class ImageComponentAccessibilityHandler : public AccessibilityHandler
|
||||
{
|
||||
public:
|
||||
explicit ImageComponentAccessibilityHandler (ImageComponent& imageComponentToWrap)
|
||||
: AccessibilityHandler (imageComponentToWrap, AccessibilityRole::image),
|
||||
imageComponent (imageComponentToWrap)
|
||||
{
|
||||
}
|
||||
|
||||
String getHelp() const override { return imageComponent.getTooltip(); }
|
||||
|
||||
private:
|
||||
ImageComponent& imageComponent;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ImageComponentAccessibilityHandler)
|
||||
};
|
||||
|
||||
return std::make_unique<ImageComponentAccessibilityHandler> (*this);
|
||||
}
|
||||
|
||||
} // namespace juce
|
||||
|
|
|
|||
|
|
@ -529,10 +529,8 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
String getTitle() const override
|
||||
{
|
||||
return label.getText();
|
||||
}
|
||||
String getTitle() const override { return label.getText(); }
|
||||
String getHelp() const override { return label.getTooltip(); }
|
||||
|
||||
AccessibleState getCurrentState() const override
|
||||
{
|
||||
|
|
@ -557,6 +555,9 @@ private:
|
|||
|
||||
private:
|
||||
Label& label;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LabelValueInterface)
|
||||
};
|
||||
|
||||
static AccessibilityActions getAccessibilityActions (Label& label)
|
||||
|
|
|
|||
|
|
@ -210,6 +210,8 @@ public:
|
|||
return {};
|
||||
}
|
||||
|
||||
String getHelp() const override { return rowComponent.getTooltip(); }
|
||||
|
||||
AccessibleState getCurrentState() const override
|
||||
{
|
||||
if (auto* m = rowComponent.owner.getModel())
|
||||
|
|
|
|||
|
|
@ -120,29 +120,48 @@ void ProgressBar::timerCallback()
|
|||
//==============================================================================
|
||||
std::unique_ptr<AccessibilityHandler> ProgressBar::createAccessibilityHandler()
|
||||
{
|
||||
class ValueInterface : public AccessibilityRangedNumericValueInterface
|
||||
class ProgressBarAccessibilityHandler : public AccessibilityHandler
|
||||
{
|
||||
public:
|
||||
explicit ValueInterface (ProgressBar& progressBarToWrap)
|
||||
: progressBar (progressBarToWrap)
|
||||
explicit ProgressBarAccessibilityHandler (ProgressBar& progressBarToWrap)
|
||||
: AccessibilityHandler (progressBarToWrap,
|
||||
AccessibilityRole::progressBar,
|
||||
AccessibilityActions{},
|
||||
AccessibilityHandler::Interfaces { std::make_unique<ValueInterface> (progressBarToWrap) }),
|
||||
progressBar (progressBarToWrap)
|
||||
{
|
||||
}
|
||||
|
||||
bool isReadOnly() const override { return true; }
|
||||
void setValue (double) override { jassertfalse; }
|
||||
double getCurrentValue() const override { return progressBar.progress; }
|
||||
AccessibleValueRange getRange() const override { return { { 0.0, 1.0 }, 0.001 }; }
|
||||
String getHelp() const override { return progressBar.getTooltip(); }
|
||||
|
||||
private:
|
||||
class ValueInterface : public AccessibilityRangedNumericValueInterface
|
||||
{
|
||||
public:
|
||||
explicit ValueInterface (ProgressBar& progressBarToWrap)
|
||||
: progressBar (progressBarToWrap)
|
||||
{
|
||||
}
|
||||
|
||||
bool isReadOnly() const override { return true; }
|
||||
void setValue (double) override { jassertfalse; }
|
||||
double getCurrentValue() const override { return progressBar.progress; }
|
||||
AccessibleValueRange getRange() const override { return { { 0.0, 1.0 }, 0.001 }; }
|
||||
|
||||
private:
|
||||
ProgressBar& progressBar;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueInterface)
|
||||
};
|
||||
|
||||
ProgressBar& progressBar;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueInterface)
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProgressBarAccessibilityHandler)
|
||||
};
|
||||
|
||||
return std::make_unique<AccessibilityHandler> (*this,
|
||||
AccessibilityRole::progressBar,
|
||||
AccessibilityActions{},
|
||||
AccessibilityHandler::Interfaces { std::make_unique<ValueInterface> (*this) });
|
||||
return std::make_unique<ProgressBarAccessibilityHandler> (*this);
|
||||
}
|
||||
|
||||
} // namespace juce
|
||||
|
|
|
|||
|
|
@ -1678,8 +1678,22 @@ void Slider::mouseWheelMove (const MouseEvent& e, const MouseWheelDetails& wheel
|
|||
Component::mouseWheelMove (e, wheel);
|
||||
}
|
||||
|
||||
std::unique_ptr<AccessibilityHandler> Slider::createAccessibilityHandler()
|
||||
//==============================================================================
|
||||
class SliderAccessibilityHandler : public AccessibilityHandler
|
||||
{
|
||||
public:
|
||||
explicit SliderAccessibilityHandler (Slider& sliderToWrap)
|
||||
: AccessibilityHandler (sliderToWrap,
|
||||
AccessibilityRole::slider,
|
||||
AccessibilityActions{},
|
||||
AccessibilityHandler::Interfaces { std::make_unique<ValueInterface> (sliderToWrap) }),
|
||||
slider (sliderToWrap)
|
||||
{
|
||||
}
|
||||
|
||||
String getHelp() const override { return slider.getTooltip(); }
|
||||
|
||||
private:
|
||||
class ValueInterface : public AccessibilityValueInterface
|
||||
{
|
||||
public:
|
||||
|
|
@ -1715,13 +1729,19 @@ std::unique_ptr<AccessibilityHandler> Slider::createAccessibilityHandler()
|
|||
Slider& slider;
|
||||
Value valueToControl;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueInterface)
|
||||
};
|
||||
|
||||
return std::make_unique<AccessibilityHandler> (*this,
|
||||
AccessibilityRole::slider,
|
||||
AccessibilityActions{},
|
||||
AccessibilityHandler::Interfaces { std::make_unique<ValueInterface> (*this) });
|
||||
Slider& slider;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SliderAccessibilityHandler)
|
||||
};
|
||||
|
||||
std::unique_ptr<AccessibilityHandler> Slider::createAccessibilityHandler()
|
||||
{
|
||||
return std::make_unique<SliderAccessibilityHandler> (*this);
|
||||
}
|
||||
|
||||
} // namespace juce
|
||||
|
|
|
|||
|
|
@ -249,6 +249,8 @@ public:
|
|||
return {};
|
||||
}
|
||||
|
||||
String getHelp() const override { return rowComponent.getTooltip(); }
|
||||
|
||||
AccessibleState getCurrentState() const override
|
||||
{
|
||||
if (auto* m = rowComponent.owner.getModel())
|
||||
|
|
|
|||
|
|
@ -2700,10 +2700,13 @@ public:
|
|||
: AccessibilityHandler (textEditorToWrap,
|
||||
textEditorToWrap.isReadOnly() ? AccessibilityRole::staticText : AccessibilityRole::editableText,
|
||||
{},
|
||||
{ std::make_unique<TextEditorTextInterface> (textEditorToWrap) })
|
||||
{ std::make_unique<TextEditorTextInterface> (textEditorToWrap) }),
|
||||
textEditor (textEditorToWrap)
|
||||
{
|
||||
}
|
||||
|
||||
String getHelp() const override { return textEditor.getTooltip(); }
|
||||
|
||||
private:
|
||||
class TextEditorTextInterface : public AccessibilityTextInterface
|
||||
{
|
||||
|
|
@ -2762,8 +2765,13 @@ private:
|
|||
|
||||
private:
|
||||
TextEditor& textEditor;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextEditorTextInterface)
|
||||
};
|
||||
|
||||
TextEditor& textEditor;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TextEditorAccessibilityHandler)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -97,6 +97,11 @@ private:
|
|||
return itemComponent.getRepresentedItem().getAccessibilityName();
|
||||
}
|
||||
|
||||
String getHelp() const override
|
||||
{
|
||||
return itemComponent.getRepresentedItem().getTooltip();
|
||||
}
|
||||
|
||||
AccessibleState getCurrentState() const override
|
||||
{
|
||||
auto& treeItem = itemComponent.getRepresentedItem();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue