Browse Source

Fake parameter change when clicking host parameter module

tags/22.02
falkTX 3 years ago
parent
commit
28d3ca2d68
4 changed files with 42 additions and 1 deletions
  1. +19
    -1
      plugins/Cardinal/src/HostParameters.cpp
  2. +4
    -0
      plugins/Cardinal/src/plugincontext.hpp
  3. +15
    -0
      src/CardinalUI.cpp
  4. +4
    -0
      src/PluginContext.hpp

+ 19
- 1
plugins/Cardinal/src/HostParameters.cpp View File

@@ -81,6 +81,20 @@ struct HostParameters : Module {
}
};

#ifndef HEADLESS
struct CardinalParameterPJ301MPort : PJ301MPort {
void onDragStart(const DragStartEvent& e) override {
if (CardinalPluginContext* const pcontext = reinterpret_cast<CardinalPluginContext*>(APP))
handleHostParameterDrag(pcontext, portId, true);
PJ301MPort::onDragStart(e);
}
void onDragEnd(const DragEndEvent& e) override {
if (CardinalPluginContext* const pcontext = reinterpret_cast<CardinalPluginContext*>(APP))
handleHostParameterDrag(pcontext, portId, false);
PJ301MPort::onDragEnd(e);
}
};

struct HostParametersWidget : ModuleWidget {
static constexpr const float startX = 10.0f;
static constexpr const float startY = 90.0f;
@@ -101,7 +115,7 @@ struct HostParametersWidget : ModuleWidget {
{
const float x = startX + int(i / 6) * paddingH;
const float y = startY + int(i % 6) * paddingV;
addOutput(createOutput<PJ301MPort>(Vec(x, y), module, i));
addOutput(createOutput<CardinalParameterPJ301MPort>(Vec(x, y), module, i));
}
}

@@ -139,5 +153,9 @@ struct HostParametersWidget : ModuleWidget {
ModuleWidget::draw(args);
}
};
#else
typedef ModuleWidget HostParametersWidget;
#endif


Model* modelHostParameters = createModel<HostParameters, HostParametersWidget>("HostParameters");

+ 4
- 0
plugins/Cardinal/src/plugincontext.hpp View File

@@ -60,6 +60,10 @@ struct CardinalPluginContext : rack::Context {
#endif
};

#ifndef HEADLESS
void handleHostParameterDrag(CardinalPluginContext* pcontext, uint index, bool started);
#endif

END_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------------------------------------------

+ 15
- 0
src/CardinalUI.cpp View File

@@ -180,6 +180,21 @@ void CardinalPluginContext::removeIdleCallback(IdleCallback* const cb)
ui->removeIdleCallback(cb);
}

void handleHostParameterDrag(CardinalPluginContext* pcontext, uint index, bool started)
{
DISTRHO_SAFE_ASSERT_RETURN(pcontext->ui != nullptr,);

if (started)
{
pcontext->ui->editParameter(index, true);
pcontext->ui->setParameterValue(index, pcontext->parameters[index]);
}
else
{
pcontext->ui->editParameter(index, false);
}
}

// -----------------------------------------------------------------------------------------------------------

class CardinalUI : public CardinalBaseUI,


+ 4
- 0
src/PluginContext.hpp View File

@@ -95,6 +95,10 @@ struct CardinalPluginContext : rack::Context {
#endif
};

#ifndef HEADLESS
void handleHostParameterDrag(CardinalPluginContext* pcontext, uint index, bool started);
#endif

// -----------------------------------------------------------------------------------------------------------

struct CardinalAudioDevice;


Loading…
Cancel
Save