Add message structs for IContextMenuTarget

This commit is contained in:
Robbert van der Helm
2021-01-06 23:34:22 +01:00
parent c1576658d6
commit 1d75fbedc6
2 changed files with 24 additions and 10 deletions
@@ -18,11 +18,8 @@
YaContextMenuTarget::ConstructArgs::ConstructArgs( YaContextMenuTarget::ConstructArgs::ConstructArgs(
native_size_t owner_instance_id, native_size_t owner_instance_id,
native_size_t context_menu_id, native_size_t context_menu_id)
int32 tag) : owner_instance_id(owner_instance_id), context_menu_id(context_menu_id) {}
: owner_instance_id(owner_instance_id),
context_menu_id(context_menu_id),
tag(tag) {}
YaContextMenuTarget::YaContextMenuTarget(const ConstructArgs&& args) YaContextMenuTarget::YaContextMenuTarget(const ConstructArgs&& args)
: arguments(std::move(args)){FUNKNOWN_CTOR} : arguments(std::move(args)){FUNKNOWN_CTOR}
@@ -47,21 +47,17 @@ class YaContextMenuTarget : public Steinberg::Vst::IContextMenuTarget {
* context menu belongs to. * context menu belongs to.
* @param context_menu_id The unique ID of the context menu requested by * @param context_menu_id The unique ID of the context menu requested by
* `owwner_instance_id`. * `owwner_instance_id`.
* @param tag The tag of the menu item this target belongs to.
*/ */
ConstructArgs(native_size_t owner_instance_id, ConstructArgs(native_size_t owner_instance_id,
native_size_t context_menu_id, native_size_t context_menu_id);
int32 tag);
native_size_t owner_instance_id; native_size_t owner_instance_id;
native_size_t context_menu_id; native_size_t context_menu_id;
int32 tag;
template <typename S> template <typename S>
void serialize(S& s) { void serialize(S& s) {
s.value8b(owner_instance_id); s.value8b(owner_instance_id);
s.value8b(context_menu_id); s.value8b(context_menu_id);
s.value4b(tag);
} }
}; };
@@ -75,6 +71,27 @@ class YaContextMenuTarget : public Steinberg::Vst::IContextMenuTarget {
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
/*
* Message to pass through a call to
* `IContextMenuTarget::executeMenuItem(tag)` to the proxied object provided
* by the plugin.
*/
struct ExecuteMenuItem {
using Response = UniversalTResult;
native_size_t owner_instance_id;
native_size_t context_menu_id;
int32 tag;
template <typename S>
void serialize(S& s) {
s.value8b(owner_instance_id);
s.value8b(context_menu_id);
s.value4b(tag);
}
};
virtual tresult PLUGIN_API executeMenuItem(int32 tag) override = 0; virtual tresult PLUGIN_API executeMenuItem(int32 tag) override = 0;
protected: protected: