@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(); }