@@ -24,6 +24,8 @@ namespace melatonin
24
24
juce::Value pickedColor;
25
25
juce::Value timing1, timing2, timing3, timingMax, hasChildren;
26
26
27
+ juce::Value isToggleable, toggleState, clickTogglesState, radioGroupId;
28
+
27
29
struct AccessiblityDetail
28
30
{
29
31
juce::Value title, value, role, handlerType;
@@ -140,6 +142,14 @@ namespace melatonin
140
142
typeValue = type (*selectedComponent);
141
143
accessibilityHandledValue = selectedComponent->isAccessible ();
142
144
145
+ if (auto button = dynamic_cast <juce::Button *> (selectedComponent.getComponent ()))
146
+ {
147
+ isToggleable = button->isToggleable ();
148
+ toggleState = button->getToggleState ();
149
+ clickTogglesState = button->getClickingTogglesState ();
150
+ radioGroupId = button->getRadioGroupId ();
151
+ }
152
+
143
153
nameValue.addListener (this );
144
154
widthValue.addListener (this );
145
155
heightValue.addListener (this );
@@ -154,6 +164,11 @@ namespace melatonin
154
164
interceptsMouseValue.addListener (this );
155
165
childrenInterceptsMouseValue.addListener (this );
156
166
167
+ isToggleable.addListener (this );
168
+ toggleState.addListener (this );
169
+ clickTogglesState.addListener (this );
170
+ radioGroupId.addListener (this );
171
+
157
172
if (selectedComponent->isAccessible () && selectedComponent->getAccessibilityHandler ())
158
173
{
159
174
auto * accH = selectedComponent->getAccessibilityHandler ();
@@ -260,6 +275,11 @@ namespace melatonin
260
275
interceptsMouseValue.removeListener (this );
261
276
childrenInterceptsMouseValue.removeListener (this );
262
277
278
+ isToggleable.removeListener (this );
279
+ toggleState.removeListener (this );
280
+ clickTogglesState.removeListener (this );
281
+ radioGroupId.removeListener (this );
282
+
263
283
for (auto & np : namedProperties)
264
284
np.value .removeListener (this );
265
285
@@ -321,6 +341,26 @@ namespace melatonin
321
341
{
322
342
selectedComponent->setInterceptsMouseClicks (interceptsMouseValue.getValue (), childrenInterceptsMouseValue.getValue ());
323
343
}
344
+ else if (value.refersToSameSourceAs (isToggleable))
345
+ {
346
+ if (auto button = dynamic_cast <juce::Button *> (selectedComponent.getComponent ()))
347
+ button->setToggleable (isToggleable.getValue ());
348
+ }
349
+ else if (value.refersToSameSourceAs (toggleState))
350
+ {
351
+ if (auto button = dynamic_cast <juce::Button *> (selectedComponent.getComponent ()))
352
+ button->setToggleState (toggleState.getValue (), juce::dontSendNotification);
353
+ }
354
+ else if (value.refersToSameSourceAs (clickTogglesState))
355
+ {
356
+ if (auto button = dynamic_cast <juce::Button *> (selectedComponent.getComponent ()))
357
+ button->setClickingTogglesState (clickTogglesState.getValue ());
358
+ }
359
+ else if (value.refersToSameSourceAs (radioGroupId))
360
+ {
361
+ if (auto button = dynamic_cast <juce::Button *> (selectedComponent.getComponent ()))
362
+ button->setRadioGroupId (radioGroupId.getValue ());
363
+ }
324
364
else
325
365
{
326
366
for (auto & nv : namedProperties)
0 commit comments