Fake parameter change when clicking host parameter module
This commit is contained in:
parent
75aad04bb8
commit
28d3ca2d68
4 changed files with 42 additions and 1 deletions
|
@ -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");
|
||||
|
|
|
@ -60,6 +60,10 @@ struct CardinalPluginContext : rack::Context {
|
|||
#endif
|
||||
};
|
||||
|
||||
#ifndef HEADLESS
|
||||
void handleHostParameterDrag(CardinalPluginContext* pcontext, uint index, bool started);
|
||||
#endif
|
||||
|
||||
END_NAMESPACE_DISTRHO
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -95,6 +95,10 @@ struct CardinalPluginContext : rack::Context {
|
|||
#endif
|
||||
};
|
||||
|
||||
#ifndef HEADLESS
|
||||
void handleHostParameterDrag(CardinalPluginContext* pcontext, uint index, bool started);
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
struct CardinalAudioDevice;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue