gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 95feb5814ef0d112338b4657793b6726554a1209
parent ded60c8a54b708045f19a8bab3e0cd414bd94e1e
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sat,  4 May 2024 23:59:59 +0200

disable D&D on part elements for parts > 0 if in multi mode

Diffstat:
Msource/xtJucePlugin/xtPartButton.cpp | 15+++++++++++++++
Msource/xtJucePlugin/xtPartButton.h | 3+++
Msource/xtJucePlugin/xtPartName.cpp | 18++++++++++++++++--
Msource/xtJucePlugin/xtPartName.h | 3+++
4 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/source/xtJucePlugin/xtPartButton.cpp b/source/xtJucePlugin/xtPartButton.cpp @@ -1,5 +1,6 @@ #include "xtPartButton.h" +#include "xtController.h" #include "xtEditor.h" namespace xtJucePlugin @@ -14,4 +15,18 @@ namespace xtJucePlugin { m_editor.getParts().selectPart(getPart()); } + + bool PartButton::isInterestedInDragSource(const SourceDetails& dragSourceDetails) + { + if(getPart() > 0 && !m_editor.getXtController().isMultiMode()) + return false; + return jucePluginEditorLib::PartButton<DrawableButton>::isInterestedInDragSource(dragSourceDetails); + } + + void PartButton::mouseDrag(const juce::MouseEvent& _event) + { + if(getPart() > 0 && !m_editor.getXtController().isMultiMode()) + return; + jucePluginEditorLib::PartButton<DrawableButton>::mouseDrag(_event); + } } diff --git a/source/xtJucePlugin/xtPartButton.h b/source/xtJucePlugin/xtPartButton.h @@ -13,6 +13,9 @@ namespace xtJucePlugin void onClick() override; + bool isInterestedInDragSource(const SourceDetails& dragSourceDetails) override; + void mouseDrag(const juce::MouseEvent& _event) override; + private: Editor& m_editor; }; diff --git a/source/xtJucePlugin/xtPartName.cpp b/source/xtJucePlugin/xtPartName.cpp @@ -11,17 +11,31 @@ namespace xtJucePlugin , m_onProgramChanged(_editor.getXtController().onProgramChanged) , m_onPlayModeChanged(_editor.getXtController().onPlayModeChanged) { - m_onPlayModeChanged = [this](const bool& _multiMode) + m_onPlayModeChanged = [this](const bool&) { updatePartName(); }; - m_onProgramChanged = [this](uint8_t _program) + m_onProgramChanged = [this](uint8_t) { updatePartName(); }; } + bool PartName::isInterestedInDragSource(const SourceDetails& _dragSourceDetails) + { + if(getPart() > 0 && !m_editor.getXtController().isMultiMode()) + return false; + return PartButton<TextButton>::isInterestedInDragSource(_dragSourceDetails); + } + + void PartName::mouseDrag(const juce::MouseEvent& _event) + { + if(getPart() > 0 && !m_editor.getXtController().isMultiMode()) + return; + PartButton<TextButton>::mouseDrag(_event); + } + void PartName::updatePartName() { const auto& c = m_editor.getXtController(); diff --git a/source/xtJucePlugin/xtPartName.h b/source/xtJucePlugin/xtPartName.h @@ -13,6 +13,9 @@ namespace xtJucePlugin public: explicit PartName(Editor& _editor); + bool isInterestedInDragSource(const SourceDetails& _dragSourceDetails) override; + void mouseDrag(const juce::MouseEvent& _event) override; + private: void updatePartName();