diff --git a/resources/data/patches_factory/Tutorials/Formula Modulator/11 Example - Reich - Piano Phase.fxp b/resources/data/patches_factory/Tutorials/Formula Modulator/11 Example - Reich - Piano Phase.fxp index 4839a8b3b67..a5256cef7ad 100644 Binary files a/resources/data/patches_factory/Tutorials/Formula Modulator/11 Example - Reich - Piano Phase.fxp and b/resources/data/patches_factory/Tutorials/Formula Modulator/11 Example - Reich - Piano Phase.fxp differ diff --git a/src/common/SurgeSynthesizer.cpp b/src/common/SurgeSynthesizer.cpp index a89d89cd69c..6807e26b3fc 100644 --- a/src/common/SurgeSynthesizer.cpp +++ b/src/common/SurgeSynthesizer.cpp @@ -3361,6 +3361,32 @@ void SurgeSynthesizer::processThreadunsafeOperations(bool dangerMode) patchid_queue = -1; } + if (has_patchid_file) + { + auto p(string_to_path(patchid_file)); + auto s = path_to_string(p.stem()); + has_patchid_file = false; + + int ptid = -1, ct = 0; + for (const auto &pti : storage.patch_list) + { + if (path_to_string(pti.path) == patchid_file) + { + ptid = ct; + } + ct++; + } + if (ptid >= 0) + { + loadPatch(ptid); + } + else + { + loadPatchByPath(patchid_file, -1, s.c_str()); + } + patchid_file[0] = 0; + } + if (load_fx_needed) loadFx(false, false); diff --git a/src/surge-xt/gui/SurgeGUIEditor.h b/src/surge-xt/gui/SurgeGUIEditor.h index 486bd3e6017..ab9b4b5a3eb 100644 --- a/src/surge-xt/gui/SurgeGUIEditor.h +++ b/src/surge-xt/gui/SurgeGUIEditor.h @@ -379,6 +379,7 @@ class SurgeGUIEditor : public Surge::GUI::IComponentTagValue::Listener, { strncpy(synth->patchid_file, file.c_str(), FILENAME_MAX); synth->has_patchid_file = true; + synth->processThreadunsafeOperations(); } void openMacroRenameDialog(const int ccid, const juce::Point where, diff --git a/src/surge-xt/gui/widgets/PatchSelector.cpp b/src/surge-xt/gui/widgets/PatchSelector.cpp index 1c0a610212f..93b95e44f20 100644 --- a/src/surge-xt/gui/widgets/PatchSelector.cpp +++ b/src/surge-xt/gui/widgets/PatchSelector.cpp @@ -255,6 +255,9 @@ void PatchSelector::mouseDown(const juce::MouseEvent &e) { juce::PopupMenu menu; + tooltipCountdown = -1; + toggleCommentTooltip(false); + menu.addSectionHeader("FAVORITES"); auto haveFavs = optionallyAddFavorites(menu, false, false); @@ -281,12 +284,17 @@ void PatchSelector::mouseDown(const juce::MouseEvent &e) if (e.mods.isShiftDown() || searchRect.contains(e.position.toInt())) { + tooltipCountdown = -1; + toggleCommentTooltip(false); + toggleTypeAheadSearch(!isTypeaheadSearchOn); return; } // if RMB is down, only show the current category bool single_category = e.mods.isRightButtonDown() || e.mods.isCommandDown(); + tooltipCountdown = -1; + toggleCommentTooltip(false); showClassicMenu(single_category); }