1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

VST3 Client: Avoid returning real editor size until onSize has been called

This commit is contained in:
reuk 2023-10-17 16:03:31 +01:00
parent 384ddee376
commit 3edb072758

View file

@ -1844,6 +1844,7 @@ private:
#endif
component = nullptr;
lastReportedSize.reset();
}
#if JUCE_LINUX || JUCE_BSD
@ -1855,32 +1856,33 @@ private:
tresult PLUGIN_API onSize (ViewRect* newSize) override
{
if (newSize != nullptr)
if (newSize == nullptr)
{
rect = convertFromHostBounds (*newSize);
if (component != nullptr)
{
component->setSize (rect.getWidth(), rect.getHeight());
#if JUCE_MAC
if (cubase10Workaround != nullptr)
{
cubase10Workaround->triggerAsyncUpdate();
}
else
#endif
{
if (auto* peer = component->getPeer())
peer->updateBounds();
}
}
return kResultTrue;
jassertfalse;
return kResultFalse;
}
jassertfalse;
return kResultFalse;
lastReportedSize.reset();
rect = convertFromHostBounds (*newSize);
if (component == nullptr)
return kResultTrue;
component->setSize (rect.getWidth(), rect.getHeight());
#if JUCE_MAC
if (cubase10Workaround != nullptr)
{
cubase10Workaround->triggerAsyncUpdate();
}
else
#endif
{
if (auto* peer = component->getPeer())
peer->updateBounds();
}
return kResultTrue;
}
tresult PLUGIN_API getSize (ViewRect* size) override
@ -1890,15 +1892,16 @@ private:
return kResultFalse;
#endif
if (size != nullptr && component != nullptr)
{
auto editorBounds = component->getSizeToContainChild();
if (size == nullptr || component == nullptr)
return kResultFalse;
*size = convertToHostBounds ({ 0, 0, editorBounds.getWidth(), editorBounds.getHeight() });
return kResultTrue;
}
const auto editorBounds = component->getSizeToContainChild();
const auto sizeToReport = lastReportedSize.has_value()
? *lastReportedSize
: convertToHostBounds ({ 0, 0, editorBounds.getWidth(), editorBounds.getHeight() });
return kResultFalse;
lastReportedSize = *size = sizeToReport;
return kResultTrue;
}
tresult PLUGIN_API canResize() override
@ -2275,6 +2278,7 @@ private:
//==============================================================================
ScopedJuceInitialiser_GUI libraryInitialiser;
std::optional<ViewRect> lastReportedSize;
#if JUCE_LINUX || JUCE_BSD
SharedResourcePointer<detail::MessageThread> messageThread;