Skip to content

Commit db253a1

Browse files
authored
Accesibility Tweaks (#197)
- If the source has gone dont use it in ally either. This fixes an async rebuild accessible case in short circuit. - Toggle button and radio button label improved
1 parent b8a6d5a commit db253a1

File tree

5 files changed

+51
-2
lines changed

5 files changed

+51
-2
lines changed

include/sst/jucegui/accessibility/AccessibilityKeyboardEdits.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ template <typename T> struct AccessibilityKeyboardEditSupport
3333
enum AccessibleKeyEditAction
3434
{
3535
None,
36+
Trigger,
3637
Increase,
3738
Decrease,
3839
ToMax,
@@ -111,6 +112,11 @@ template <typename T> struct AccessibilityKeyboardEditSupport
111112
return {Action::ToDefault};
112113
}
113114

115+
if (key.getKeyCode() == juce::KeyPress::returnKey)
116+
{
117+
return {Action::Trigger};
118+
}
119+
114120
return {};
115121
}
116122
};

src/sst/jucegui/components/ContinuousParamEditor.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,27 +302,43 @@ struct ContinuousParamEditorAH : public juce::AccessibilityHandler
302302
ContinuousParamEditor *slider;
303303

304304
bool isReadOnly() const override { return false; }
305-
double getCurrentValue() const override { return slider->continuous()->getValue(); }
305+
double getCurrentValue() const override
306+
{
307+
if (!slider->continuous())
308+
return 0;
309+
return slider->continuous()->getValue();
310+
}
306311
void setValue(double newValue) override
307312
{
313+
if (!slider->continuous())
314+
return;
315+
308316
slider->onBeginEdit();
309317
slider->continuous()->setValueFromGUI(newValue);
310318
slider->notifyAccessibleChange();
311319
slider->onEndEdit();
312320
}
313321
juce::String getCurrentValueAsString() const override
314322
{
323+
if (!slider->continuous())
324+
return "null";
325+
315326
return slider->continuous()->getValueAsString();
316327
}
317328
void setValueAsString(const juce::String &newValue) override
318329
{
330+
if (!slider->continuous())
331+
return;
332+
319333
slider->onBeginEdit();
320334
slider->continuous()->setValueAsString(newValue.toStdString());
321335
slider->notifyAccessibleChange();
322336
slider->onEndEdit();
323337
}
324338
AccessibleValueRange getRange() const override
325339
{
340+
if (!slider->continuous())
341+
return {{0, 1}, 1};
326342
return {{slider->continuous()->getMin(), slider->continuous()->getMax()},
327343
slider->continuous()->getMinMaxRange() * 0.01};
328344
}
@@ -342,6 +358,9 @@ struct ContinuousParamEditorAH : public juce::AccessibilityHandler
342358

343359
void resetToDefault()
344360
{
361+
if (!slider->continuous())
362+
return;
363+
345364
slider->continuous()->setValueFromGUI(slider->continuous()->getDefaultValue());
346365
slider->notifyAccessibleChange();
347366
}

src/sst/jucegui/components/DiscreteParamEditor.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ struct DiscreteParamEditorAH : public juce::AccessibilityHandler
103103
double getCurrentValue() const override { return slider->data->getValue(); }
104104
void setValue(double newValue) override
105105
{
106+
if (!slider->data)
107+
return;
106108
slider->onBeginEdit();
107109
slider->data->setValueFromGUI(newValue);
108110
slider->notifyAccessibleChange();
@@ -111,10 +113,16 @@ struct DiscreteParamEditorAH : public juce::AccessibilityHandler
111113
}
112114
juce::String getCurrentValueAsString() const override
113115
{
116+
if (!slider->data)
117+
return "-null-";
118+
114119
return slider->data->getValueAsString();
115120
}
116121
void setValueAsString(const juce::String &newValue) override
117122
{
123+
if (!slider->data)
124+
return;
125+
118126
slider->onBeginEdit();
119127
slider->data->setValueAsString(newValue.toStdString());
120128
slider->notifyAccessibleChange();
@@ -123,6 +131,8 @@ struct DiscreteParamEditorAH : public juce::AccessibilityHandler
123131
}
124132
AccessibleValueRange getRange() const override
125133
{
134+
if (!slider->data)
135+
return {{0, 1}, 1};
126136
return {{(double)slider->data->getMin(), (double)slider->data->getMax()}, 1};
127137
}
128138

@@ -141,6 +151,9 @@ struct DiscreteParamEditorAH : public juce::AccessibilityHandler
141151

142152
void resetToDefault()
143153
{
154+
if (!slider->data)
155+
return;
156+
144157
slider->data->setValueFromGUI(slider->data->getDefaultValue());
145158
slider->repaint();
146159
slider->notifyAccessibleChange();

src/sst/jucegui/components/ToggleButton.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@ bool ToggleButton::keyPressed(const juce::KeyPress &e)
192192
auto a = accessibleEdit(e);
193193
switch (a.action)
194194
{
195+
case Action::Trigger:
196+
{
197+
onBeginEdit();
198+
data->setValueFromGUI(!data->getValue());
199+
notifyAccessibleChange();
200+
repaint();
201+
onEndEdit();
202+
return true;
203+
}
204+
break;
195205
case Action::Increase:
196206
case Action::ToMax:
197207
{

src/sst/jucegui/components/ToggleButtonRadioGroup.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct subordinateDiscrete : data::Discrete
3333
}
3434
virtual ~subordinateDiscrete() = default;
3535

36-
std::string getLabel() const override { return "unused"; }
36+
std::string getLabel() const override { return under->getValueAsStringFor(idx); }
3737
int getValue() const override { return under->getValue() == idx ? 1 : 0; }
3838

3939
void setValueFromGUI(const int &f) override
@@ -91,6 +91,7 @@ void ToggleButtonRadioGroup::dataChanged()
9191
{
9292
auto b = std::make_unique<ToggleButton>();
9393
b->setLabel(data->getValueAsStringFor(i));
94+
b->setTitle(data->getValueAsStringFor(i));
9495
addAndMakeVisible(*b);
9596

9697
auto sd = std::make_unique<subordinateDiscrete>(data, i);

0 commit comments

Comments
 (0)