From 28bc0bed137d258cb4db5906175f44a6bd22c90d Mon Sep 17 00:00:00 2001 From: asb2m10 Date: Sun, 4 Aug 2024 15:10:03 -0400 Subject: [PATCH] Force focus order --- Source/GlobalEditor.cpp | 105 ++++++++++++++-------- Source/GlobalEditor.h | 2 +- Source/OperatorEditor.cpp | 79 +++++++++++------ Source/OperatorEditor.h | 2 +- Source/ParamDialog.cpp | 181 ++++++++++++++++++++++---------------- Source/ParamDialog.h | 2 +- Source/PluginParam.cpp | 2 + 7 files changed, 227 insertions(+), 146 deletions(-) diff --git a/Source/GlobalEditor.cpp b/Source/GlobalEditor.cpp index d0ac83a2..fc62e594 100644 --- a/Source/GlobalEditor.cpp +++ b/Source/GlobalEditor.cpp @@ -7,7 +7,7 @@ the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Created with Projucer version: 6.0.7 + Created with Projucer version: 7.0.9 ------------------------------------------------------------------------------ @@ -40,7 +40,7 @@ class MidiMonitor : public Component { int imageHeight2; int imageWidth; - SharedResourcePointer lookAndFeel; + SharedResourcePointer lookAndFeel; public: MidiMonitor(SysexComm *sysexComm) { midi = sysexComm; @@ -95,7 +95,7 @@ class AboutBox : public DialogWindow { surge->setColour(HyperlinkButton::ColourIds::textColourId, Colour(0xFF4ea097)); surge->setJustificationType(Justification::left); surge->setBounds(18, 458, getWidth() - 36, 30); - + // create a new Component to hold ''dexed'' and ''surge'' as subcomponents // and set this holder Component as the content component of the DialogWindow Component* holder = new Component(); @@ -135,6 +135,7 @@ GlobalEditor::GlobalEditor () lfoSpeed.reset (new juce::Slider ("lfoSpeed")); addAndMakeVisible (lfoSpeed.get()); + lfoSpeed->setExplicitFocusOrder (14); lfoSpeed->setRange (0, 99, 1); lfoSpeed->setSliderStyle (juce::Slider::RotaryVerticalDrag); lfoSpeed->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -144,6 +145,7 @@ GlobalEditor::GlobalEditor () lfoAmDepth.reset (new juce::Slider ("lfoAmDepth")); addAndMakeVisible (lfoAmDepth.get()); + lfoAmDepth->setExplicitFocusOrder (19); lfoAmDepth->setRange (0, 99, 1); lfoAmDepth->setSliderStyle (juce::Slider::RotaryVerticalDrag); lfoAmDepth->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -153,6 +155,7 @@ GlobalEditor::GlobalEditor () lfoPitchDepth.reset (new juce::Slider ("lfoPitchDepth")); addAndMakeVisible (lfoPitchDepth.get()); + lfoPitchDepth->setExplicitFocusOrder (18); lfoPitchDepth->setRange (0, 99, 1); lfoPitchDepth->setSliderStyle (juce::Slider::RotaryVerticalDrag); lfoPitchDepth->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -162,6 +165,7 @@ GlobalEditor::GlobalEditor () lfoDelay.reset (new juce::Slider ("lfoDelay")); addAndMakeVisible (lfoDelay.get()); + lfoDelay->setExplicitFocusOrder (15); lfoDelay->setRange (0, 99, 1); lfoDelay->setSliderStyle (juce::Slider::RotaryVerticalDrag); lfoDelay->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -171,6 +175,7 @@ GlobalEditor::GlobalEditor () cutoff.reset (new juce::Slider ("cutoff")); addAndMakeVisible (cutoff.get()); + cutoff->setExplicitFocusOrder (6); cutoff->setRange (0, 1, 0); cutoff->setSliderStyle (juce::Slider::RotaryVerticalDrag); cutoff->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -180,6 +185,7 @@ GlobalEditor::GlobalEditor () reso.reset (new juce::Slider ("reso")); addAndMakeVisible (reso.get()); + reso->setExplicitFocusOrder (7); reso->setRange (0, 1, 0); reso->setSliderStyle (juce::Slider::RotaryVerticalDrag); reso->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -189,6 +195,7 @@ GlobalEditor::GlobalEditor () pitchRate2.reset (new juce::Slider ("pitchRate2")); addAndMakeVisible (pitchRate2.get()); + pitchRate2->setExplicitFocusOrder (24); pitchRate2->setRange (0, 99, 1); pitchRate2->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchRate2->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -198,6 +205,7 @@ GlobalEditor::GlobalEditor () pitchRate3.reset (new juce::Slider ("pitchRate3")); addAndMakeVisible (pitchRate3.get()); + pitchRate3->setExplicitFocusOrder (26); pitchRate3->setRange (0, 99, 1); pitchRate3->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchRate3->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -207,6 +215,7 @@ GlobalEditor::GlobalEditor () pitchRate4.reset (new juce::Slider ("pitchRate4")); addAndMakeVisible (pitchRate4.get()); + pitchRate4->setExplicitFocusOrder (28); pitchRate4->setRange (0, 99, 1); pitchRate4->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchRate4->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -216,6 +225,7 @@ GlobalEditor::GlobalEditor () pitchRate1.reset (new juce::Slider ("pitchRate1")); addAndMakeVisible (pitchRate1.get()); + pitchRate1->setExplicitFocusOrder (22); pitchRate1->setRange (0, 99, 1); pitchRate1->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchRate1->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -225,6 +235,7 @@ GlobalEditor::GlobalEditor () pitchLevel2.reset (new juce::Slider ("pitchLevel2")); addAndMakeVisible (pitchLevel2.get()); + pitchLevel2->setExplicitFocusOrder (23); pitchLevel2->setRange (0, 99, 1); pitchLevel2->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchLevel2->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -234,6 +245,7 @@ GlobalEditor::GlobalEditor () pitchLevel3.reset (new juce::Slider ("pitchLevel3")); addAndMakeVisible (pitchLevel3.get()); + pitchLevel3->setExplicitFocusOrder (25); pitchLevel3->setRange (0, 99, 1); pitchLevel3->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchLevel3->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -243,6 +255,7 @@ GlobalEditor::GlobalEditor () pitchLevel4.reset (new juce::Slider ("pitchLevel4")); addAndMakeVisible (pitchLevel4.get()); + pitchLevel4->setExplicitFocusOrder (27); pitchLevel4->setRange (0, 99, 1); pitchLevel4->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchLevel4->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -252,6 +265,7 @@ GlobalEditor::GlobalEditor () pitchLevel1.reset (new juce::Slider ("pitchLevel1")); addAndMakeVisible (pitchLevel1.get()); + pitchLevel1->setExplicitFocusOrder (21); pitchLevel1->setRange (0, 99, 1); pitchLevel1->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchLevel1->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -261,6 +275,7 @@ GlobalEditor::GlobalEditor () transpose.reset (new juce::Slider ("transpose")); addAndMakeVisible (transpose.get()); + transpose->setExplicitFocusOrder (9); transpose->setRange (0, 48, 1); transpose->setSliderStyle (juce::Slider::RotaryVerticalDrag); transpose->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -270,6 +285,7 @@ GlobalEditor::GlobalEditor () oscSync.reset (new juce::ToggleButton ("oscSync")); addAndMakeVisible (oscSync.get()); + oscSync->setExplicitFocusOrder (20); oscSync->setButtonText (juce::String()); oscSync->addListener (this); @@ -277,6 +293,7 @@ GlobalEditor::GlobalEditor () pitchModSens.reset (new juce::Slider ("pitchModSens")); addAndMakeVisible (pitchModSens.get()); + pitchModSens->setExplicitFocusOrder (17); pitchModSens->setRange (0, 7, 1); pitchModSens->setSliderStyle (juce::Slider::RotaryVerticalDrag); pitchModSens->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -286,6 +303,7 @@ GlobalEditor::GlobalEditor () lfoSync.reset (new juce::ToggleButton ("lfoSync")); addAndMakeVisible (lfoSync.get()); + lfoSync->setExplicitFocusOrder (16); lfoSync->setButtonText (juce::String()); lfoSync->addListener (this); @@ -305,6 +323,7 @@ GlobalEditor::GlobalEditor () feedback.reset (new juce::Slider ("feedback")); addAndMakeVisible (feedback.get()); + feedback->setExplicitFocusOrder (12); feedback->setRange (0, 7, 1); feedback->setSliderStyle (juce::Slider::RotaryVerticalDrag); feedback->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -314,6 +333,7 @@ GlobalEditor::GlobalEditor () algo.reset (new juce::Slider ("algo")); addAndMakeVisible (algo.get()); + algo->setExplicitFocusOrder (11); algo->setRange (1, 32, 1); algo->setSliderStyle (juce::Slider::RotaryVerticalDrag); algo->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -329,6 +349,7 @@ GlobalEditor::GlobalEditor () output.reset (new juce::Slider ("output")); addAndMakeVisible (output.get()); + output->setExplicitFocusOrder (8); output->setRange (0, 1, 0); output->setSliderStyle (juce::Slider::RotaryVerticalDrag); output->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -336,9 +357,7 @@ GlobalEditor::GlobalEditor () output->setBounds (157, 60, 34, 34); - //vuOutput.reset (new VuMeter()); - //vuOutput.reset(new VuMeterMain(6)); - vuOutput.reset(new VuMeterOutput); + vuOutput.reset (new VuMeterOutput ()); addAndMakeVisible (vuOutput.get()); vuOutput->setName ("vuOutput"); @@ -346,34 +365,39 @@ GlobalEditor::GlobalEditor () initButton.reset (new juce::TextButton ("initButton")); addAndMakeVisible (initButton.get()); - initButton->setButtonText (translate("INIT")); + initButton->setExplicitFocusOrder (3); + initButton->setButtonText (TRANS ("INIT")); initButton->addListener (this); initButton->setBounds (100, 111, 50, 30); parmButton.reset (new juce::TextButton ("parmButton")); addAndMakeVisible (parmButton.get()); - parmButton->setButtonText (translate("PARM")); + parmButton->setExplicitFocusOrder (2); + parmButton->setButtonText (TRANS ("PARM")); parmButton->addListener (this); parmButton->setBounds (52, 111, 50, 30); cartButton.reset (new juce::TextButton ("cartButton")); addAndMakeVisible (cartButton.get()); - cartButton->setButtonText (translate("CART")); + cartButton->setExplicitFocusOrder (1); + cartButton->setButtonText (TRANS ("CART")); cartButton->addListener (this); cartButton->setBounds (3, 111, 50, 30); storeButton.reset (new juce::TextButton ("storeButton")); addAndMakeVisible (storeButton.get()); - storeButton->setButtonText (translate("STORE")); + storeButton->setExplicitFocusOrder (4); + storeButton->setButtonText (TRANS ("STORE")); storeButton->addListener (this); storeButton->setBounds (270, 109, 50, 30); monoMode.reset (new juce::ToggleButton ("monoMode")); addAndMakeVisible (monoMode.get()); + monoMode->setExplicitFocusOrder (10); monoMode->setButtonText (juce::String()); monoMode->addListener (this); @@ -381,6 +405,7 @@ GlobalEditor::GlobalEditor () lfoType.reset (new ComboBoxImage()); addAndMakeVisible (lfoType.get()); + lfoType->setExplicitFocusOrder (13); lfoType->setName ("lfoType"); lfoType->setBounds (583, 8, 36, 26); @@ -404,6 +429,7 @@ GlobalEditor::GlobalEditor () tune.reset (new juce::Slider ("tune")); addAndMakeVisible (tune.get()); + tune->setExplicitFocusOrder (5); tune->setRange (0, 1, 0); tune->setSliderStyle (juce::Slider::RotaryVerticalDrag); tune->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -791,86 +817,86 @@ BEGIN_JUCER_METADATA fixedSize="1" initialWidth="864" initialHeight="144"> + explicitFocusOrder="0" pos="6 103 140 8" class="VuMeterOutput" + params=""/> diff --git a/Source/GlobalEditor.h b/Source/GlobalEditor.h index 65b59b43..232ef68c 100644 --- a/Source/GlobalEditor.h +++ b/Source/GlobalEditor.h @@ -7,7 +7,7 @@ the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Created with Projucer version: 6.0.7 + Created with Projucer version: 7.0.9 ------------------------------------------------------------------------------ diff --git a/Source/OperatorEditor.cpp b/Source/OperatorEditor.cpp index 9f82e6d9..d2270849 100644 --- a/Source/OperatorEditor.cpp +++ b/Source/OperatorEditor.cpp @@ -7,7 +7,7 @@ the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Created with Projucer version: 6.0.1 + Created with Projucer version: 7.0.9 ------------------------------------------------------------------------------ @@ -19,7 +19,7 @@ //[Headers] You can add your own extra header files here... //[/Headers] -#include "VUMeter.h" + #include "OperatorEditor.h" @@ -52,6 +52,7 @@ OperatorEditor::OperatorEditor () s_egl1.reset (new juce::Slider ("egl1")); addAndMakeVisible (s_egl1.get()); + s_egl1->setExplicitFocusOrder (4); s_egl1->setRange (0, 99, 1); s_egl1->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egl1->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -61,15 +62,17 @@ OperatorEditor::OperatorEditor () s_egl2.reset (new juce::Slider ("egl2")); addAndMakeVisible (s_egl2.get()); + s_egl2->setExplicitFocusOrder (6); s_egl2->setRange (0, 99, 1); s_egl2->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egl2->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); s_egl2->addListener (this); - s_egl2->setBounds (33, 129, 34, 34); + s_egl2->setBounds (33, 128, 34, 34); s_egl3.reset (new juce::Slider ("egl3")); addAndMakeVisible (s_egl3.get()); + s_egl3->setExplicitFocusOrder (8); s_egl3->setRange (0, 99, 1); s_egl3->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egl3->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -79,6 +82,7 @@ OperatorEditor::OperatorEditor () s_egl4.reset (new juce::Slider ("egl4")); addAndMakeVisible (s_egl4.get()); + s_egl4->setExplicitFocusOrder (10); s_egl4->setRange (0, 99, 1); s_egl4->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egl4->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -88,6 +92,7 @@ OperatorEditor::OperatorEditor () s_egv1.reset (new juce::Slider ("egr1")); addAndMakeVisible (s_egv1.get()); + s_egv1->setExplicitFocusOrder (5); s_egv1->setRange (0, 99, 1); s_egv1->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egv1->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -97,6 +102,7 @@ OperatorEditor::OperatorEditor () s_egv2.reset (new juce::Slider ("egr3")); addAndMakeVisible (s_egv2.get()); + s_egv2->setExplicitFocusOrder (7); s_egv2->setRange (0, 99, 1); s_egv2->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egv2->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -106,6 +112,7 @@ OperatorEditor::OperatorEditor () s_egv3.reset (new juce::Slider ("egr3")); addAndMakeVisible (s_egv3.get()); + s_egv3->setExplicitFocusOrder (9); s_egv3->setRange (0, 99, 1); s_egv3->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egv3->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -115,6 +122,7 @@ OperatorEditor::OperatorEditor () s_egv4.reset (new juce::Slider ("egr4")); addAndMakeVisible (s_egv4.get()); + s_egv4->setExplicitFocusOrder (11); s_egv4->setRange (0, 99, 1); s_egv4->setSliderStyle (juce::Slider::RotaryVerticalDrag); s_egv4->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -124,6 +132,7 @@ OperatorEditor::OperatorEditor () opLevel.reset (new juce::Slider ("opLevel")); addAndMakeVisible (opLevel.get()); + opLevel->setExplicitFocusOrder (15); opLevel->setRange (0, 99, 1); opLevel->setSliderStyle (juce::Slider::RotaryVerticalDrag); opLevel->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -133,6 +142,7 @@ OperatorEditor::OperatorEditor () opFine.reset (new juce::Slider ("opFine")); addAndMakeVisible (opFine.get()); + opFine->setExplicitFocusOrder (3); opFine->setRange (0, 99, 1); opFine->setSliderStyle (juce::Slider::RotaryVerticalDrag); opFine->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -142,6 +152,7 @@ OperatorEditor::OperatorEditor () opCoarse.reset (new juce::Slider ("opCoarse")); addAndMakeVisible (opCoarse.get()); + opCoarse->setExplicitFocusOrder (2); opCoarse->setRange (0, 31, 1); opCoarse->setSliderStyle (juce::Slider::RotaryVerticalDrag); opCoarse->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -150,7 +161,7 @@ OperatorEditor::OperatorEditor () opCoarse->setBounds (43, 24, 34, 34); khzDisplay.reset (new juce::Label ("khz", - translate("1,000 kHz"))); + TRANS ("1,000 kHz"))); addAndMakeVisible (khzDisplay.get()); khzDisplay->setFont (juce::Font (12.60f, juce::Font::plain).withTypefaceStyle ("Regular")); khzDisplay->setJustificationType (juce::Justification::centred); @@ -165,6 +176,7 @@ OperatorEditor::OperatorEditor () detune.reset (new juce::Slider ("detune")); addAndMakeVisible (detune.get()); + detune->setExplicitFocusOrder (1); detune->setRange (-7, 7, 1); detune->setSliderStyle (juce::Slider::RotaryVerticalDrag); detune->setTextBoxStyle (juce::Slider::NoTextBox, true, 80, 20); @@ -180,7 +192,8 @@ OperatorEditor::OperatorEditor () sclLeftLevel.reset (new juce::Slider ("sclLeftLevel")); addAndMakeVisible (sclLeftLevel.get()); - sclLeftLevel->setTooltip (translate("Keyboard Scale Level Left Depth ")); + sclLeftLevel->setTooltip (TRANS ("Keyboard Scale Level Left Depth ")); + sclLeftLevel->setExplicitFocusOrder (16); sclLeftLevel->setRange (0, 99, 1); sclLeftLevel->setSliderStyle (juce::Slider::RotaryVerticalDrag); sclLeftLevel->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -190,7 +203,8 @@ OperatorEditor::OperatorEditor () sclRightLevel.reset (new juce::Slider ("sclRightLevel")); addAndMakeVisible (sclRightLevel.get()); - sclRightLevel->setTooltip (translate("Keyboard Scale Level Right Depth ")); + sclRightLevel->setTooltip (TRANS ("Keyboard Scale Level Right Depth ")); + sclRightLevel->setExplicitFocusOrder (18); sclRightLevel->setRange (0, 99, 1); sclRightLevel->setSliderStyle (juce::Slider::RotaryVerticalDrag); sclRightLevel->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -200,7 +214,8 @@ OperatorEditor::OperatorEditor () sclLvlBrkPt.reset (new juce::Slider ("sclLvlBrkPt")); addAndMakeVisible (sclLvlBrkPt.get()); - sclLvlBrkPt->setTooltip (translate("Scale Level Breakpoint")); + sclLvlBrkPt->setTooltip (TRANS ("Scale Level Breakpoint")); + sclLvlBrkPt->setExplicitFocusOrder (17); sclLvlBrkPt->setRange (0, 99, 1); sclLvlBrkPt->setSliderStyle (juce::Slider::LinearHorizontal); sclLvlBrkPt->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -210,7 +225,8 @@ OperatorEditor::OperatorEditor () sclRateScaling.reset (new juce::Slider ("sclRateScaling")); addAndMakeVisible (sclRateScaling.get()); - sclRateScaling->setTooltip (translate("Keyboard Rate Scaling")); + sclRateScaling->setTooltip (TRANS ("Keyboard Rate Scaling")); + sclRateScaling->setExplicitFocusOrder (20); sclRateScaling->setRange (0, 7, 1); sclRateScaling->setSliderStyle (juce::Slider::RotaryVerticalDrag); sclRateScaling->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -220,6 +236,7 @@ OperatorEditor::OperatorEditor () keyVelSens.reset (new juce::Slider ("keyVelSens")); addAndMakeVisible (keyVelSens.get()); + keyVelSens->setExplicitFocusOrder (14); keyVelSens->setRange (0, 7, 1); keyVelSens->setSliderStyle (juce::Slider::RotaryVerticalDrag); keyVelSens->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -229,6 +246,7 @@ OperatorEditor::OperatorEditor () ampModSens.reset (new juce::Slider ("ampModSens")); addAndMakeVisible (ampModSens.get()); + ampModSens->setExplicitFocusOrder (13); ampModSens->setRange (0, 3, 1); ampModSens->setSliderStyle (juce::Slider::RotaryVerticalDrag); ampModSens->setTextBoxStyle (juce::Slider::NoTextBox, false, 80, 20); @@ -244,6 +262,7 @@ OperatorEditor::OperatorEditor () opMode.reset (new juce::ToggleButton ("opMode")); addAndMakeVisible (opMode.get()); + opMode->setExplicitFocusOrder (12); opMode->setButtonText (juce::String()); opMode->addListener (this); @@ -251,12 +270,14 @@ OperatorEditor::OperatorEditor () kbdLeftCurve.reset (new ComboBoxImage()); addAndMakeVisible (kbdLeftCurve.get()); + kbdLeftCurve->setExplicitFocusOrder (19); kbdLeftCurve->setName ("kbdLeftCurve"); kbdLeftCurve->setBounds (128, 170, 36, 26); kbdRightCurve.reset (new ComboBoxImage()); addAndMakeVisible (kbdRightCurve.get()); + kbdRightCurve->setExplicitFocusOrder (21); kbdRightCurve->setName ("kbdRightCurve"); kbdRightCurve->setBounds (240, 170, 36, 26); @@ -619,47 +640,47 @@ BEGIN_JUCER_METADATA fixedSize="1" initialWidth="287" initialHeight="218"> + virtualName="" explicitFocusOrder="5" pos="236 136 90 24" editable="0" + layout="33" items="100 % 125 % 150 % 200 % 300 % 400 %" + textWhenNonSelected="" textWhenNoItems="(no choices)"/> END_JUCER_METADATA diff --git a/Source/ParamDialog.h b/Source/ParamDialog.h index fe918af9..8b322305 100644 --- a/Source/ParamDialog.h +++ b/Source/ParamDialog.h @@ -7,7 +7,7 @@ the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Created with Projucer version: 6.0.7 + Created with Projucer version: 7.0.9 ------------------------------------------------------------------------------ diff --git a/Source/PluginParam.cpp b/Source/PluginParam.cpp index c3461e81..4d1635d7 100644 --- a/Source/PluginParam.cpp +++ b/Source/PluginParam.cpp @@ -243,6 +243,8 @@ void Ctrl::bind(Slider *s) { s->addListener(this); s->addMouseListener(this, true); s->setVelocityModeParameters (0.1, 1, 0.05, 1, ModifierKeys::shiftModifier); + s->textFromValueFunction = [this](double value) { return this->label + this->getValueDisplay(); }; + s->setWantsKeyboardFocus(true); } void Ctrl::bind(Button *b) {