commit 97c49f763194fa7bbbb867df3e941311d8f23353 parent d40a9326f29c8ec8917142d06af7ee21913f9837 Author: dsp56300 <dsp56300@users.noreply.github.com> Date: Tue, 9 Jul 2024 22:34:41 +0200 do not crash in skins that do not have a patch manager Diffstat:
M | source/jucePluginEditorLib/pluginEditor.cpp | | | 5 | +++++ |
M | source/jucePluginEditorLib/pluginEditorState.cpp | | | 44 | ++++++++++++++++++++++++-------------------- |
2 files changed, 29 insertions(+), 20 deletions(-)
diff --git a/source/jucePluginEditorLib/pluginEditor.cpp b/source/jucePluginEditorLib/pluginEditor.cpp @@ -232,6 +232,9 @@ namespace jucePluginEditorLib void Editor::copyCurrentPatchToClipboard() const { // copy patch of current part to Clipboard + if(!m_patchManager) + return; + const auto p = m_patchManager->requestPatchForPart(m_patchManager->getCurrentPart()); if(!p) @@ -245,6 +248,8 @@ namespace jucePluginEditorLib bool Editor::replaceCurrentPatchFromClipboard() const { + if(!m_patchManager) + return false; return m_patchManager->activatePatchFromClipboard(); } diff --git a/source/jucePluginEditorLib/pluginEditorState.cpp b/source/jucePluginEditorLib/pluginEditorState.cpp @@ -348,32 +348,36 @@ void PluginEditorState::openMenu(const juce::MouseEvent* _event) { menu.addSeparator(); + if(auto* pm = editor->getPatchManager()) + { #ifdef JUCE_MAC - const std::string ctrlName = "Cmd"; + const std::string ctrlName = "Cmd"; #else - const std::string ctrlName = "Ctrl"; + const std::string ctrlName = "Ctrl"; #endif - - { - juce::PopupMenu::Item item("Copy current Patch to Clipboard"); - item.shortcutKeyDescription = ctrlName + "+C"; - item.action = [editor] { - editor->copyCurrentPatchToClipboard(); - }; - menu.addItem(item); - } + juce::PopupMenu::Item item("Copy current Patch to Clipboard"); + item.shortcutKeyDescription = ctrlName + "+C"; + item.action = [editor] + { + editor->copyCurrentPatchToClipboard(); + }; + menu.addItem(item); + } - auto patches = editor->getPatchManager()->getPatchesFromClipboard(); - if(!patches.empty()) - { - juce::PopupMenu::Item item("Replace current Patch from Clipboard"); - item.shortcutKeyDescription = ctrlName + "+V"; - item.action = [editor] { - editor->replaceCurrentPatchFromClipboard(); - }; - menu.addItem(item); + auto patches = pm->getPatchesFromClipboard(); + if(!patches.empty()) + { + juce::PopupMenu::Item item("Replace current Patch from Clipboard"); + item.shortcutKeyDescription = ctrlName + "+V"; + item.action = [editor] + { + editor->replaceCurrentPatchFromClipboard(); + }; + menu.addItem(item); + } + } } }