diff --git a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp index a324abc518..483b4f5ddc 100644 --- a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp +++ b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp @@ -894,9 +894,9 @@ void GraphEditorPanel::showPopupMenu (Point mousePos) menu->showMenuAsync ({}, ModalCallbackFunction::create ([this, mousePos] (int r) { - if (r > 0) - if (auto* mainWin = findParentComponentOfClass()) - createNewPlugin (mainWin->getChosenType (r), mousePos); + if (auto* mainWin = findParentComponentOfClass()) + if (const auto chosen = mainWin->getChosenType (r)) + createNewPlugin (*chosen, mousePos); })); } } diff --git a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp index b911a6e8bd..b0eebf562b 100644 --- a/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.cpp @@ -602,9 +602,9 @@ void MainHostWindow::menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/ } else { - if (getIndexChosenByMenu (menuItemID) >= 0) - createPlugin (getChosenType (menuItemID), { proportionOfWidth (0.3f + Random::getSystemRandom().nextFloat() * 0.6f), - proportionOfHeight (0.3f + Random::getSystemRandom().nextFloat() * 0.6f) }); + if (const auto chosen = getChosenType (menuItemID)) + createPlugin (*chosen, { proportionOfWidth (0.3f + Random::getSystemRandom().nextFloat() * 0.6f), + proportionOfHeight (0.3f + Random::getSystemRandom().nextFloat() * 0.6f) }); } } @@ -697,18 +697,19 @@ void MainHostWindow::addPluginsToMenu (PopupMenu& m) addToMenu (*tree, m, pluginDescriptions, pluginDescriptionsAndPreference); } -int MainHostWindow::getIndexChosenByMenu (int menuID) const +std::optional MainHostWindow::getChosenType (const int menuID) const { - const auto i = menuID - menuIDBase; - return isPositiveAndBelow (i, pluginDescriptionsAndPreference.size()) ? i : -1; -} + const auto internalIndex = menuID - 1; -PluginDescriptionAndPreference MainHostWindow::getChosenType (const int menuID) const -{ - if (menuID >= 1 && menuID < (int) (1 + internalTypes.size())) - return PluginDescriptionAndPreference { internalTypes[(size_t) (menuID - 1)] }; + if (isPositiveAndBelow (internalIndex, internalTypes.size())) + return PluginDescriptionAndPreference { internalTypes[(size_t) internalIndex] }; - return pluginDescriptionsAndPreference[getIndexChosenByMenu (menuID)]; + const auto externalIndex = menuID - menuIDBase; + + if (isPositiveAndBelow (externalIndex, pluginDescriptionsAndPreference.size())) + return pluginDescriptionsAndPreference[externalIndex]; + + return {}; } //============================================================================== diff --git a/extras/AudioPluginHost/Source/UI/MainHostWindow.h b/extras/AudioPluginHost/Source/UI/MainHostWindow.h index 16e1598797..0a73194084 100644 --- a/extras/AudioPluginHost/Source/UI/MainHostWindow.h +++ b/extras/AudioPluginHost/Source/UI/MainHostWindow.h @@ -110,7 +110,7 @@ public: void createPlugin (const PluginDescriptionAndPreference&, Point pos); void addPluginsToMenu (PopupMenu&); - PluginDescriptionAndPreference getChosenType (int menuID) const; + std::optional getChosenType (int menuID) const; std::unique_ptr graphHolder; @@ -124,8 +124,6 @@ private: void showAudioSettings(); - int getIndexChosenByMenu (int menuID) const; - //============================================================================== AudioDeviceManager deviceManager; AudioPluginFormatManager formatManager;