@@ -197,6 +197,7 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudi
197197 mainPanel->initViewport ();
198198 mainPanel->setPlayHeadTime (playHeadTime);
199199 addAndMakeVisible (mainViewport.get ());
200+ viewedPanel = mainPanel.get ();
200201
201202 clockDiagramPanel =
202203 std::make_unique<ClockDiagramPanel>(processorRef.params , *this , mainPanel->getNotes ());
@@ -273,7 +274,14 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudi
273274 addAndMakeVisible (pitchMemorySettingsButton.get ());
274275
275276 settingsButton->onClick = [this ](const juce::MouseEvent &me) {
276- settingsViewport->setVisible (!settingsViewport->isVisible ());
277+ bool newVisible = !settingsViewport->isVisible ();
278+ settingsViewport->setVisible (newVisible); // viewport
279+ if (newVisible) {
280+ viewedPanel = settingsPanel.get (); // panel
281+ } else {
282+ viewedPanel = mainPanel.get ();
283+ }
284+ bringBackKeyboardFocus ();
277285
278286 helpViewport->setVisible (false );
279287 dissonancePanel->setVisible (false );
@@ -283,7 +291,14 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudi
283291 return false ;
284292 };
285293 helpButton->onClick = [this ](const juce::MouseEvent &me) {
286- helpViewport->setVisible (!helpViewport->isVisible ());
294+ bool newVisible = !helpViewport->isVisible ();
295+ helpViewport->setVisible (newVisible); // viewport
296+ if (newVisible) {
297+ viewedPanel = helpPanel.get (); // panel
298+ } else {
299+ viewedPanel = mainPanel.get ();
300+ }
301+ bringBackKeyboardFocus ();
287302
288303 settingsViewport->setVisible (false );
289304 dissonancePanel->setVisible (false );
@@ -293,7 +308,14 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudi
293308 return false ;
294309 };
295310 dissonanceButton->onClick = [this ](const juce::MouseEvent &me) {
296- dissonancePanel->setVisible (!dissonancePanel->isVisible ());
311+ bool newVisible = !dissonancePanel->isVisible ();
312+ dissonancePanel->setVisible (newVisible);
313+ if (newVisible) {
314+ viewedPanel = dissonancePanel.get ();
315+ } else {
316+ viewedPanel = mainPanel.get ();
317+ }
318+ bringBackKeyboardFocus ();
297319
298320 helpViewport->setVisible (false );
299321 settingsViewport->setVisible (false );
@@ -303,7 +325,14 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudi
303325 return false ;
304326 };
305327 pitchMemorySettingsButton->onClick = [this ](const juce::MouseEvent &me) {
306- pitchMemorySettingsPanel->setVisible (!pitchMemorySettingsPanel->isVisible ());
328+ bool newVisible = !pitchMemorySettingsPanel->isVisible ();
329+ pitchMemorySettingsPanel->setVisible (newVisible);
330+ if (newVisible) {
331+ viewedPanel = pitchMemorySettingsPanel.get ();
332+ } else {
333+ viewedPanel = mainPanel.get ();
334+ }
335+ bringBackKeyboardFocus ();
307336
308337 settingsViewport->setVisible (false );
309338 helpViewport->setVisible (false );
0 commit comments