mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 03:50:11 +02:00
Implement the Wine host side of IComponentHandler3
This commit is contained in:
@@ -18,6 +18,8 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "context-menu-proxy.h"
|
||||
|
||||
Vst3ComponentHandlerProxyImpl::Vst3ComponentHandlerProxyImpl(
|
||||
Vst3Bridge& bridge,
|
||||
Vst3ComponentHandlerProxy::ConstructArgs&& args)
|
||||
@@ -93,11 +95,23 @@ tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::finishGroupEdit() {
|
||||
|
||||
Steinberg::Vst::IContextMenu* PLUGIN_API
|
||||
Vst3ComponentHandlerProxyImpl::createContextMenu(
|
||||
Steinberg::IPlugView* plugView,
|
||||
Steinberg::IPlugView* /*plugView*/,
|
||||
const Steinberg::Vst::ParamID* paramID) {
|
||||
// TODO: Implement
|
||||
std::cerr << "TODO: IComponentHandler3::createContextMenu" << std::endl;
|
||||
return nullptr;
|
||||
// XXX: The does do not make it clear what `paramID` is, so my assumption
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
tresult PLUGIN_API Vst3ComponentHandlerProxyImpl::notifyUnitSelection(
|
||||
|
||||
@@ -37,19 +37,18 @@ class Vst3ContextMenuProxyImpl : public Vst3ContextMenuProxy {
|
||||
void** obj) override;
|
||||
|
||||
// From `IContextMenu`
|
||||
virtual int32 PLUGIN_API getItemCount() override = 0;
|
||||
virtual tresult PLUGIN_API
|
||||
int32 PLUGIN_API getItemCount() override;
|
||||
tresult PLUGIN_API
|
||||
getItem(int32 index,
|
||||
Steinberg::Vst::IContextMenuItem& item /*out*/,
|
||||
Steinberg::Vst::IContextMenuTarget** target /*out*/) override = 0;
|
||||
virtual tresult PLUGIN_API
|
||||
Steinberg::Vst::IContextMenuTarget** target /*out*/) override;
|
||||
tresult PLUGIN_API
|
||||
addItem(const Steinberg::Vst::IContextMenuItem& item,
|
||||
Steinberg::Vst::IContextMenuTarget* target) override = 0;
|
||||
virtual tresult PLUGIN_API
|
||||
Steinberg::Vst::IContextMenuTarget* target) override;
|
||||
tresult PLUGIN_API
|
||||
removeItem(const Item& item,
|
||||
Steinberg::Vst::IContextMenuTarget* target) override = 0;
|
||||
virtual tresult PLUGIN_API popup(Steinberg::UCoord x,
|
||||
Steinberg::UCoord y) override = 0;
|
||||
Steinberg::Vst::IContextMenuTarget* target) override;
|
||||
tresult PLUGIN_API popup(Steinberg::UCoord x, Steinberg::UCoord y) override;
|
||||
|
||||
private:
|
||||
Vst3Bridge& bridge;
|
||||
|
||||
Reference in New Issue
Block a user