From 91ef9e2b8589a0cda6c5e82ae3dc91e5068d65fd Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 7 Mar 2019 11:07:05 +0000 Subject: [PATCH] Fixed some layout issues when using an AudioDeviceSelectorComponent with the "advanced" settings hidden --- .../gui/juce_AudioDeviceSelectorComponent.cpp | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp index 379e1afc0e..1b58e08237 100644 --- a/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp @@ -210,7 +210,8 @@ public: { showAdvancedSettingsButton.reset (new TextButton (TRANS("Show advanced settings..."))); addAndMakeVisible (showAdvancedSettingsButton.get()); - showAdvancedSettingsButton->onClick = [this] { showAdvanced(); }; + showAdvancedSettingsButton->setClickingTogglesState (true); + showAdvancedSettingsButton->onClick = [this] { toggleAdvancedSettings(); }; } type.scanForDevices(); @@ -276,27 +277,37 @@ public: r.removeFromTop (space * 2); - if (showAdvancedSettingsButton != nullptr) + if (showAdvancedSettingsButton != nullptr + && sampleRateDropDown != nullptr && bufferSizeDropDown != nullptr) { - showAdvancedSettingsButton->setBounds (r.withHeight (h)); + showAdvancedSettingsButton->setBounds (r.removeFromTop (h)); + r.removeFromTop (space); showAdvancedSettingsButton->changeWidthToFitText(); } - const bool advancedSettingsVisible = showAdvancedSettingsButton == nullptr - || ! showAdvancedSettingsButton->isVisible(); + auto advancedSettingsVisible = showAdvancedSettingsButton == nullptr + || showAdvancedSettingsButton->getToggleState(); if (sampleRateDropDown != nullptr) { sampleRateDropDown->setVisible (advancedSettingsVisible); - sampleRateDropDown->setBounds (r.removeFromTop (h)); - r.removeFromTop (space); + + if (advancedSettingsVisible) + { + sampleRateDropDown->setBounds (r.removeFromTop (h)); + r.removeFromTop (space); + } } if (bufferSizeDropDown != nullptr) { bufferSizeDropDown->setVisible (advancedSettingsVisible); - bufferSizeDropDown->setBounds (r.removeFromTop (h)); - r.removeFromTop (space); + + if (advancedSettingsVisible) + { + bufferSizeDropDown->setBounds (r.removeFromTop (h)); + r.removeFromTop (space); + } } r.removeFromTop (space); @@ -400,9 +411,10 @@ public: return false; } - void showAdvanced() + void toggleAdvancedSettings() { - showAdvancedSettingsButton->setVisible (false); + showAdvancedSettingsButton->setButtonText ((showAdvancedSettingsButton->getToggleState() ? "Hide " : "Show ") + + String ("advanced settings...")); resized(); }