@d-healey So I might have found the culprit
I have CONFIRM_PRESET_OVERWRITE=1 and the confirmation message doesn't seem to handle the CANCEL case so this would better be either removed from the message box or handled
void UserPresetHelpers::saveUserPreset(ModulatorSynthChain *chain, const String& targetFile/*=String()*/, NotificationType notify/*=sendNotification*/)
{
#if USE_BACKEND
const String version = dynamic_cast<GlobalSettingManager*>(chain->getMainController())->getSettingsObject().getSetting(HiseSettings::Project::Version);
SemanticVersionChecker versionChecker(version, version);
if (!versionChecker.newVersionNumberIsValid())
{
PresetHandler::showMessageWindow("Invalid version number", "You need semantic versioning (something like 1.0.0) in order to support user presets", PresetHandler::IconType::Error);
return;
}
if (!GET_PROJECT_HANDLER(chain).isActive()) return;
#endif
File presetFile = File(targetFile);
String existingNote;
StringArray existingTags;
#if CONFIRM_PRESET_OVERWRITE
if (presetFile.existsAsFile() && (!MessageManager::getInstance()->isThisTheMessageThread() || PresetHandler::showYesNoWindow("Confirm overwrite", "Do you want to overwrite the preset (Press cancel to create a new user preset?")))
{
existingNote = PresetBrowser::DataBaseHelpers::getNoteFromXml(presetFile);
existingTags = PresetBrowser::DataBaseHelpers::getTagsFromXml(presetFile);
presetFile.deleteFile();
}
#else
if (presetFile.existsAsFile())
{
existingNote = PresetBrowser::DataBaseHelpers::getNoteFromXml(presetFile);
existingTags = PresetBrowser::DataBaseHelpers::getTagsFromXml(presetFile);
presetFile.deleteFile();
}
#endif
if (!presetFile.existsAsFile())
{
auto preset = createUserPreset(chain);
if (preset.isValid())
{
auto xml = preset.createXml();
presetFile.replaceWithText(xml->createDocument(""));
if (existingNote.isNotEmpty())
PresetBrowser::DataBaseHelpers::writeNoteInXml(presetFile, existingNote);
if (!existingTags.isEmpty())
PresetBrowser::DataBaseHelpers::writeTagsInXml(presetFile, existingTags);
if (notify)
{
chain->getMainController()->getUserPresetHandler().currentlyLoadedFile = presetFile;
chain->getMainController()->getUserPresetHandler().sendRebuildMessage();
}
}
}
chain->getMainController()->getUserPresetHandler().postPresetSave();
}