diff --git a/Source/IconMenu.cpp b/Source/IconMenu.cpp index 25ac00f..e15b049 100644 --- a/Source/IconMenu.cpp +++ b/Source/IconMenu.cpp @@ -286,12 +286,27 @@ void IconMenu::menuInvocationCallback(int id, IconMenu* im) im->deletePluginStates(); int index = id - im->activePluginList.getNumTypes() - 3; - PluginDescription plugin = *im->activePluginList.getType(index); - String key = "pluginOrder-" + plugin.descriptiveName + plugin.version + plugin.pluginFormatName; + std::vector timeSorted = im->getTimeSortedList(); + String key = "pluginOrder-" + timeSorted[index].descriptiveName + timeSorted[index].version + timeSorted[index].pluginFormatName; + int unsortedIndex = 0; + for (int i = 0; im->activePluginList.getNumTypes(); i++) + { + PluginDescription current = *im->activePluginList.getType(i); + if (key.equalsIgnoreCase("pluginOrder-" + current.descriptiveName + current.version + current.pluginFormatName)) + { + unsortedIndex = i; + break; + } + } + + // Remove plugin order getAppProperties().getUserSettings()->removeValue(key); getAppProperties().saveIfNeeded(); - im->activePluginList.removeType(index); + + // Remove plugin from list + im->activePluginList.removeType(unsortedIndex); + // Save current states im->savePluginStates(); im->loadActivePlugins(); } @@ -322,6 +337,16 @@ void IconMenu::menuInvocationCallback(int id, IconMenu* im) } } +std::vector IconMenu::getTimeSortedList() +{ + int time = 0; + std::vector list; + for (int i = 0; i < activePluginList.getNumTypes(); i++) + list.push_back(getNextPluginOlderThanTime(time)); + return list; + +} + void IconMenu::deletePluginStates() { for (int i = 0; i < activePluginList.getNumTypes(); i++) diff --git a/Source/IconMenu.hpp b/Source/IconMenu.hpp index ada8d31..c191c5e 100644 --- a/Source/IconMenu.hpp +++ b/Source/IconMenu.hpp @@ -31,6 +31,7 @@ private: void deletePluginStates(); PluginDescription getNextPluginOlderThanTime(int &time); void removePluginsLackingInputOutput(); + std::vector getTimeSortedList(); AudioDeviceManager deviceManager; AudioPluginFormatManager formatManager;