diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index fce2536..c7751e1 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -497,7 +497,7 @@ int64_t PiPedalModel::SaveCurrentPresetAs(int64_t clientId, const std::string &n auto pedalboard = this->pedalBoard; pedalboard.name(name); - int64_t result = storage.saveCurrentPresetAs(pedalboard, name, saveAfterInstanceId); + int64_t result = storage.SaveCurrentPresetAs(pedalboard, name, saveAfterInstanceId); FirePresetsChanged(clientId); return result; } @@ -594,10 +594,16 @@ int64_t PiPedalModel::DeleteBank(int64_t clientId, int64_t instanceId) int64_t PiPedalModel::DeletePreset(int64_t clientId, int64_t instanceId) { std::lock_guard guard{mutex}; - + int64_t oldSelection = storage.GetCurrentPresetId(); int64_t newSelection = storage.DeletePreset(instanceId); this->FirePresetsChanged(clientId); // fire now. - return newSelection; + if (oldSelection != newSelection) + { + this->LoadPreset( + -1, // can't use cached version. + newSelection); + } + return newSelection; } bool PiPedalModel::RenamePreset(int64_t clientId, int64_t instanceId, const std::string &name) { diff --git a/src/Storage.cpp b/src/Storage.cpp index 69a038c..203a33f 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -425,7 +425,7 @@ void Storage::SaveCurrentPreset(const PedalBoard &pedalBoard) item.preset(pedalBoard); SaveCurrentBank(); } -int64_t Storage::saveCurrentPresetAs(const PedalBoard &pedalBoard, const std::string &name, int64_t saveAfterInstanceId) +int64_t Storage::SaveCurrentPresetAs(const PedalBoard &pedalBoard, const std::string &name, int64_t saveAfterInstanceId) { PedalBoard newPedalBoard = pedalBoard; newPedalBoard.name(name); @@ -741,6 +741,11 @@ int64_t Storage::DeleteBank(int64_t bankId) throw PiPedalStateException("Bank not found."); } +int64_t Storage::GetCurrentPresetId() const +{ + return this->currentBank.selectedPreset(); +} + int64_t Storage::UploadPreset(const BankFile&bankFile,int64_t uploadAfter) { int64_t lastPreset = this->currentBank.selectedPreset(); diff --git a/src/Storage.hpp b/src/Storage.hpp index cb41567..e638a87 100644 --- a/src/Storage.hpp +++ b/src/Storage.hpp @@ -90,8 +90,8 @@ public: void LoadBank(int64_t instanceId); const PedalBoard& GetCurrentPreset(); void SaveCurrentPreset(const PedalBoard&pedalBoard); - int64_t saveCurrentPresetAs(const PedalBoard&pedalBoard, const std::string&namne,int64_t saveAfterInstanceId = -1); - + int64_t SaveCurrentPresetAs(const PedalBoard&pedalBoard, const std::string&namne,int64_t saveAfterInstanceId = -1); + int64_t GetCurrentPresetId() const; void GetPresetIndex(PresetIndex*pResult); void SetPresetIndex(const PresetIndex &presetIndex); PedalBoard GetPreset(int64_t instanceId) const;