mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-12 07:12:42 +02:00
Fully implement IContextMenuTarget
This commit is contained in:
@@ -47,7 +47,7 @@ Vst3ContextMenuProxyImpl::queryInterface(const Steinberg::TUID _iid,
|
||||
int32 PLUGIN_API Vst3ContextMenuProxyImpl::getItemCount() {
|
||||
// TODO: Implement
|
||||
std::cerr << "TODO: IContextMenu::getItemCount()" << std::endl;
|
||||
return Steinberg::kNotImplemented;
|
||||
return 0;
|
||||
}
|
||||
|
||||
tresult PLUGIN_API Vst3ContextMenuProxyImpl::getItem(
|
||||
|
||||
@@ -50,6 +50,13 @@ class Vst3ContextMenuProxyImpl : public Vst3ContextMenuProxy {
|
||||
Steinberg::Vst::IContextMenuTarget* target) override;
|
||||
tresult PLUGIN_API popup(Steinberg::UCoord x, Steinberg::UCoord y) override;
|
||||
|
||||
/**
|
||||
* The targets passed when to `addItem` calls made by the plugin. This way
|
||||
* we can call these same targets later.
|
||||
*/
|
||||
std::map<int32, Steinberg::IPtr<Steinberg::Vst::IContextMenuTarget>>
|
||||
context_menu_targets;
|
||||
|
||||
private:
|
||||
Vst3Bridge& bridge;
|
||||
};
|
||||
|
||||
@@ -261,6 +261,14 @@ void Vst3Bridge::run() {
|
||||
.connection_point->notify(
|
||||
request.message_ptr.get_original());
|
||||
},
|
||||
[&](YaContextMenuTarget::ExecuteMenuItem& request)
|
||||
-> YaContextMenuTarget::ExecuteMenuItem::Response {
|
||||
return object_instances[request.owner_instance_id]
|
||||
.registered_context_menus.at(request.context_menu_id)
|
||||
.get()
|
||||
.context_menu_targets[request.target_tag]
|
||||
->executeMenuItem(request.tag);
|
||||
},
|
||||
[&](YaEditController::SetComponentState& request)
|
||||
-> YaEditController::SetComponentState::Response {
|
||||
return object_instances[request.instance_id]
|
||||
|
||||
Reference in New Issue
Block a user