diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index 6c09602988..06b2e70547 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -844,6 +844,10 @@ private: macHostWindow = juce::attachComponentToWindowRefVST (component.get(), parent, isNSView); #endif + #if ! JUCE_MAC + setContentScaleFactor ((Steinberg::IPlugViewContentScaleSupport::ScaleFactor) scaleFactor); + #endif + component->resizeHostWindow(); systemWindow = parent; attachedToParent(); @@ -959,12 +963,17 @@ private: tresult PLUGIN_API setContentScaleFactor (Steinberg::IPlugViewContentScaleSupport::ScaleFactor factor) override { #if ! JUCE_MAC + scaleFactor = static_cast (factor); + + if (component == nullptr) + return kResultFalse; + #if JUCE_WINDOWS && ! JUCE_WIN_PER_MONITOR_DPI_AWARE if (auto* ed = component->pluginEditor.get()) - ed->setScaleFactor ((float) factor); + ed->setScaleFactor (scaleFactor); #else - if (! approximatelyEqual (component->getNativeEditorScaleFactor(), (float) factor)) - component->nativeScaleFactorChanged ((double) factor); + if (! approximatelyEqual (component->getNativeEditorScaleFactor(), scaleFactor)) + component->nativeScaleFactorChanged ((double) scaleFactor); #endif component->resizeHostWindow(); @@ -1198,6 +1207,8 @@ private: #if JUCE_MAC void* macHostWindow = nullptr; bool isNSView = false; + #else + float scaleFactor = 1.0f; #endif #if JUCE_WINDOWS