mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-10 04:30:12 +02:00
Update the ViewRect in checkSizeConstraint()
This commit is contained in:
@@ -1001,6 +1001,20 @@ void Vst3Logger::log_response(bool is_host_vst,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Vst3Logger::log_response(
|
||||||
|
bool is_host_vst,
|
||||||
|
const YaPlugView::CheckSizeConstraintResponse& response) {
|
||||||
|
log_response_base(is_host_vst, [&](auto& message) {
|
||||||
|
message << response.result.string();
|
||||||
|
if (response.result == Steinberg::kResultOk) {
|
||||||
|
message << ", <ViewRect* with left = " << response.updated_rect.left
|
||||||
|
<< ", top = " << response.updated_rect.top
|
||||||
|
<< ", right = " << response.updated_rect.right
|
||||||
|
<< ", bottom = " << response.updated_rect.bottom << ">";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void Vst3Logger::log_response(bool is_host_vst,
|
void Vst3Logger::log_response(bool is_host_vst,
|
||||||
const YaPluginFactory::ConstructArgs& args) {
|
const YaPluginFactory::ConstructArgs& args) {
|
||||||
log_response_base(is_host_vst, [&](auto& message) {
|
log_response_base(is_host_vst, [&](auto& message) {
|
||||||
|
|||||||
@@ -180,6 +180,8 @@ class Vst3Logger {
|
|||||||
void log_response(bool is_host_vst,
|
void log_response(bool is_host_vst,
|
||||||
const YaEditController::CreateViewResponse&);
|
const YaEditController::CreateViewResponse&);
|
||||||
void log_response(bool is_host_vst, const YaPlugView::GetSizeResponse&);
|
void log_response(bool is_host_vst, const YaPlugView::GetSizeResponse&);
|
||||||
|
void log_response(bool is_host_vst,
|
||||||
|
const YaPlugView::CheckSizeConstraintResponse&);
|
||||||
void log_response(bool is_host_vst, const YaPluginFactory::ConstructArgs&);
|
void log_response(bool is_host_vst, const YaPluginFactory::ConstructArgs&);
|
||||||
void log_response(bool is_host_vst, const Configuration&);
|
void log_response(bool is_host_vst, const Configuration&);
|
||||||
void log_response(bool is_host_vst,
|
void log_response(bool is_host_vst,
|
||||||
|
|||||||
@@ -320,14 +320,27 @@ class YaPlugView : public Steinberg::IPlugView {
|
|||||||
|
|
||||||
virtual tresult PLUGIN_API canResize() override = 0;
|
virtual tresult PLUGIN_API canResize() override = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The result and updated `ViewRect` from a call to
|
||||||
|
* `IPlugView::checkSizeConstraint(rect)`.
|
||||||
|
*/
|
||||||
|
struct CheckSizeConstraintResponse {
|
||||||
|
UniversalTResult result;
|
||||||
|
Steinberg::ViewRect updated_rect;
|
||||||
|
|
||||||
|
template <typename S>
|
||||||
|
void serialize(S& s) {
|
||||||
|
s.object(result);
|
||||||
|
s.object(updated_rect);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Message to pass through a call to `IPlugView::checkSizeConstraint(rect)`
|
* Message to pass through a call to `IPlugView::checkSizeConstraint(rect)`
|
||||||
* to the Wine plugin host.
|
* to the Wine plugin host.
|
||||||
*
|
|
||||||
* TODO: This should also return the updated ViewRect
|
|
||||||
*/
|
*/
|
||||||
struct CheckSizeConstraint {
|
struct CheckSizeConstraint {
|
||||||
using Response = UniversalTResult;
|
using Response = CheckSizeConstraintResponse;
|
||||||
|
|
||||||
native_size_t owner_instance_id;
|
native_size_t owner_instance_id;
|
||||||
|
|
||||||
|
|||||||
@@ -146,8 +146,13 @@ tresult PLUGIN_API Vst3PlugViewProxyImpl::canResize() {
|
|||||||
tresult PLUGIN_API
|
tresult PLUGIN_API
|
||||||
Vst3PlugViewProxyImpl::checkSizeConstraint(Steinberg::ViewRect* rect) {
|
Vst3PlugViewProxyImpl::checkSizeConstraint(Steinberg::ViewRect* rect) {
|
||||||
if (rect) {
|
if (rect) {
|
||||||
return bridge.send_message(YaPlugView::CheckSizeConstraint{
|
const CheckSizeConstraintResponse response =
|
||||||
.owner_instance_id = owner_instance_id(), .rect = *rect});
|
bridge.send_message(YaPlugView::CheckSizeConstraint{
|
||||||
|
.owner_instance_id = owner_instance_id(), .rect = *rect});
|
||||||
|
|
||||||
|
*rect = response.updated_rect;
|
||||||
|
|
||||||
|
return response.result;
|
||||||
} else {
|
} else {
|
||||||
bridge.logger.log(
|
bridge.logger.log(
|
||||||
"WARNING: Null pointer passed to "
|
"WARNING: Null pointer passed to "
|
||||||
|
|||||||
@@ -530,8 +530,12 @@ void Vst3Bridge::run() {
|
|||||||
},
|
},
|
||||||
[&](YaPlugView::CheckSizeConstraint& request)
|
[&](YaPlugView::CheckSizeConstraint& request)
|
||||||
-> YaPlugView::CheckSizeConstraint::Response {
|
-> YaPlugView::CheckSizeConstraint::Response {
|
||||||
return object_instances[request.owner_instance_id]
|
const tresult result =
|
||||||
.plug_view->checkSizeConstraint(&request.rect);
|
object_instances[request.owner_instance_id]
|
||||||
|
.plug_view->checkSizeConstraint(&request.rect);
|
||||||
|
|
||||||
|
return YaPlugView::CheckSizeConstraintResponse{
|
||||||
|
.result = result, .updated_rect = std::move(request.rect)};
|
||||||
},
|
},
|
||||||
[&](YaPluginBase::Initialize& request)
|
[&](YaPluginBase::Initialize& request)
|
||||||
-> YaPluginBase::Initialize::Response {
|
-> YaPluginBase::Initialize::Response {
|
||||||
|
|||||||
Reference in New Issue
Block a user