mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-10 04:30:12 +02:00
Implement the Wine host side of IComponentHandler3
This commit is contained in:
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "context-menu-proxy.h"
|
||||||
|
|
||||||
Vst3ComponentHandlerProxyImpl::Vst3ComponentHandlerProxyImpl(
|
Vst3ComponentHandlerProxyImpl::Vst3ComponentHandlerProxyImpl(
|
||||||
Vst3Bridge& bridge,
|
Vst3Bridge& bridge,
|
||||||
Vst3ComponentHandlerProxy::ConstructArgs&& args)
|
Vst3ComponentHandlerProxy::ConstructArgs&& args)
|
||||||
@@ -93,12 +95,24 @@ tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::finishGroupEdit() {
|
|||||||
|
|
||||||
Steinberg::Vst::IContextMenu* PLUGIN_API
|
Steinberg::Vst::IContextMenu* PLUGIN_API
|
||||||
Vst3ComponentHandlerProxyImpl::createContextMenu(
|
Vst3ComponentHandlerProxyImpl::createContextMenu(
|
||||||
Steinberg::IPlugView* plugView,
|
Steinberg::IPlugView* /*plugView*/,
|
||||||
const Steinberg::Vst::ParamID* paramID) {
|
const Steinberg::Vst::ParamID* paramID) {
|
||||||
// TODO: Implement
|
// XXX: The does do not make it clear what `paramID` is, so my assumption
|
||||||
std::cerr << "TODO: IComponentHandler3::createContextMenu" << std::endl;
|
// that it really is a pointer to a parameter ID. I'll assume that 'the
|
||||||
|
// parameter being zero' was a typo and that they mean passign a null
|
||||||
|
// pointer.
|
||||||
|
CreateContextMenuResponse response =
|
||||||
|
bridge.send_message(YaComponentHandler3::CreateContextMenu{
|
||||||
|
.owner_instance_id = owner_instance_id(),
|
||||||
|
.param_id = (paramID ? std::optional(*paramID) : std::nullopt)});
|
||||||
|
|
||||||
|
if (response.context_menu_args) {
|
||||||
|
return new Vst3ContextMenuProxyImpl(
|
||||||
|
bridge, std::move(*response.context_menu_args));
|
||||||
|
} else {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::notifyUnitSelection(
|
tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::notifyUnitSelection(
|
||||||
Steinberg::Vst::UnitID unitId) {
|
Steinberg::Vst::UnitID unitId) {
|
||||||
|
|||||||
@@ -37,19 +37,18 @@ class Vst3ContextMenuProxyImpl : public Vst3ContextMenuProxy {
|
|||||||
void** obj) override;
|
void** obj) override;
|
||||||
|
|
||||||
// From `IContextMenu`
|
// From `IContextMenu`
|
||||||
virtual int32 PLUGIN_API getItemCount() override = 0;
|
int32 PLUGIN_API getItemCount() override;
|
||||||
virtual tresult PLUGIN_API
|
tresult PLUGIN_API
|
||||||
getItem(int32 index,
|
getItem(int32 index,
|
||||||
Steinberg::Vst::IContextMenuItem& item /*out*/,
|
Steinberg::Vst::IContextMenuItem& item /*out*/,
|
||||||
Steinberg::Vst::IContextMenuTarget** target /*out*/) override = 0;
|
Steinberg::Vst::IContextMenuTarget** target /*out*/) override;
|
||||||
virtual tresult PLUGIN_API
|
tresult PLUGIN_API
|
||||||
addItem(const Steinberg::Vst::IContextMenuItem& item,
|
addItem(const Steinberg::Vst::IContextMenuItem& item,
|
||||||
Steinberg::Vst::IContextMenuTarget* target) override = 0;
|
Steinberg::Vst::IContextMenuTarget* target) override;
|
||||||
virtual tresult PLUGIN_API
|
tresult PLUGIN_API
|
||||||
removeItem(const Item& item,
|
removeItem(const Item& item,
|
||||||
Steinberg::Vst::IContextMenuTarget* target) override = 0;
|
Steinberg::Vst::IContextMenuTarget* target) override;
|
||||||
virtual tresult PLUGIN_API popup(Steinberg::UCoord x,
|
tresult PLUGIN_API popup(Steinberg::UCoord x, Steinberg::UCoord y) override;
|
||||||
Steinberg::UCoord y) override = 0;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Vst3Bridge& bridge;
|
Vst3Bridge& bridge;
|
||||||
|
|||||||
Reference in New Issue
Block a user