From 4fdda4ed53f78785b9f0cee8d5ee45ddc3241929 Mon Sep 17 00:00:00 2001 From: yoshih Date: Fri, 10 Jan 2025 14:11:40 +0800 Subject: [PATCH] add back accessibility order feature --- src/surge-fx/ParameterPanel.cpp | 21 +++++++++++---------- src/surge-fx/ParameterPanel.h | 9 ++++++++- src/surge-fx/SurgeFXEditor.cpp | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/surge-fx/ParameterPanel.cpp b/src/surge-fx/ParameterPanel.cpp index ba61007d931..814c3e6d3a3 100644 --- a/src/surge-fx/ParameterPanel.cpp +++ b/src/surge-fx/ParameterPanel.cpp @@ -1,9 +1,10 @@ #include "ParameterPanel.h" -ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) +ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p, + std::vector &accessibleOrder) : processor(p), styleSheet(sst::jucegui::style::StyleSheet::getBuiltInStyleSheet( - sst::jucegui::style::StyleSheet ::DARK)) - + sst::jucegui::style::StyleSheet::DARK)), + accessibleOrderWeakRefs(accessibleOrder) { sst::jucegui::style ::StyleSheet::initializeStyleSheets([]() {}); @@ -28,7 +29,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) knob->setSource(knobSource.get()); - addAndMakeVisible(knob.get()); + addAndMakeVisibleRecordOrder(knob.get()); knobs.push_back(std::move(knob)); sources.push_back(std::move(knobSource)); @@ -47,7 +48,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) }; fxTempoSync[i].setTitle("Parameter " + std::to_string(i) + " TempoSync"); - addAndMakeVisible(&(fxTempoSync[i])); + addAndMakeVisibleRecordOrder(&(fxTempoSync[i])); fxDeactivated[i].setOnOffImage(BinaryData::DE_Act_svg, BinaryData::DE_Act_svgSize, BinaryData::DE_Deact_svg, BinaryData::DE_Deact_svgSize); @@ -63,7 +64,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) this->processor.setUserEditingParamFeature(i, false); }; fxDeactivated[i].setTitle("Parameter " + std::to_string(i) + " Deactivate"); - addAndMakeVisible(&(fxDeactivated[i])); + addAndMakeVisibleRecordOrder(&(fxDeactivated[i])); fxExtended[i].setOnOffImage(BinaryData::EX_Act_svg, BinaryData::EX_Act_svgSize, BinaryData::EX_Deact_svg, BinaryData::EX_Deact_svgSize); @@ -79,7 +80,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) this->processor.setUserEditingParamFeature(i, false); }; fxExtended[i].setTitle("Parameter " + std::to_string(i) + " Extended"); - addAndMakeVisible(&(fxExtended[i])); + addAndMakeVisibleRecordOrder(&(fxExtended[i])); fxAbsoluted[i].setOnOffImage(BinaryData::AB_Act_svg, BinaryData::AB_Act_svgSize, BinaryData::AB_Deact_svg, BinaryData::AB_Deact_svgSize); @@ -97,7 +98,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) }; fxAbsoluted[i].setTitle("Parameter " + std::to_string(i) + " Absoluted"); - addAndMakeVisible(&(fxAbsoluted[i])); + addAndMakeVisibleRecordOrder(&(fxAbsoluted[i])); processor.prepareParametersAbsentAudio(); fxParamDisplay[i].setGroup(processor.getParamGroup(i).c_str()); @@ -108,7 +109,7 @@ ParameterPanel::ParameterPanel(SurgefxAudioProcessor &p) processor.setParameterByString(i, s); }; - addAndMakeVisible(&(fxParamDisplay[i])); + addAndMakeVisibleRecordOrder(&(fxParamDisplay[i])); } } @@ -146,7 +147,7 @@ void ParameterPanel::reset() knob->setSource(knobSource.get()); knob->setEnabled(processor.getParamEnabled(i)); - addAndMakeVisible(*knob); + addAndMakeVisibleRecordOrder(knob.get()); knobs.push_back(std::move(knob)); sources.push_back(std::move(knobSource)); diff --git a/src/surge-fx/ParameterPanel.h b/src/surge-fx/ParameterPanel.h index 4bf6fd69f23..15a6305c7a8 100644 --- a/src/surge-fx/ParameterPanel.h +++ b/src/surge-fx/ParameterPanel.h @@ -22,7 +22,7 @@ class ParameterPanel : public juce::Component { public: - ParameterPanel(SurgefxAudioProcessor &); + ParameterPanel(SurgefxAudioProcessor &, std::vector &accessibleOrder); ~ParameterPanel() override; @@ -50,8 +50,15 @@ class ParameterPanel : public juce::Component juce::Colour backgroundColour = juce::Colour(205, 206, 212); juce::Colour surgeOrange = juce::Colour(255, 144, 0); + std::vector &accessibleOrderWeakRefs; // Reference to the vector juce::Font projectFont; + void addAndMakeVisibleRecordOrder(juce::Component *c) + { + accessibleOrderWeakRefs.push_back(c); + addAndMakeVisible(c); + } + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ParameterPanel); }; diff --git a/src/surge-fx/SurgeFXEditor.cpp b/src/surge-fx/SurgeFXEditor.cpp index 9e1e7fb1edc..452c188c207 100644 --- a/src/surge-fx/SurgeFXEditor.cpp +++ b/src/surge-fx/SurgeFXEditor.cpp @@ -133,7 +133,7 @@ SurgefxAudioProcessorEditor::SurgefxAudioProcessorEditor(SurgefxAudioProcessor & picker = std::make_unique(this); addAndMakeVisibleRecordOrder(picker.get()); - deafultParameterPanel = std::make_unique(p); + deafultParameterPanel = std::make_unique(p, accessibleOrderWeakRefs); addAndMakeVisibleRecordOrder(deafultParameterPanel.get()); fxNameLabel = std::make_unique("fxlabel", "Surge XT Effects");