Fully implement IContextMenuTarget

This commit is contained in:
Robbert van der Helm
2021-01-06 23:58:05 +01:00
parent 26eb8ac1f3
commit 5d0df7febe
9 changed files with 57 additions and 8 deletions
@@ -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;
};
+8
View File
@@ -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]