@@ -432,7 +432,7 @@ void UI::onResize(const ResizeEvent& ev) | |||||
{ | { | ||||
UIWidget::onResize(ev); | UIWidget::onResize(ev); | ||||
#if !(defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP)) | |||||
#if ! DISTRHO_UI_USES_SIZE_REQUEST | |||||
if (uiData->initializing) | if (uiData->initializing) | ||||
return; | return; | ||||
@@ -442,10 +442,10 @@ void UI::onResize(const ResizeEvent& ev) | |||||
#endif | #endif | ||||
} | } | ||||
// NOTE: only used for VST3 and CLAP | |||||
// NOTE: only used for CLAP and VST3 | |||||
void UI::requestSizeChange(const uint width, const uint height) | void UI::requestSizeChange(const uint width, const uint height) | ||||
{ | { | ||||
#if defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP) | |||||
#if DISTRHO_UI_USES_SIZE_REQUEST | |||||
if (uiData->initializing) | if (uiData->initializing) | ||||
uiData->window->setSizeFromHost(width, height); | uiData->window->setSizeFromHost(width, height); | ||||
else | else | ||||
@@ -157,15 +157,9 @@ public: | |||||
{ | { | ||||
const double scaleFactor = fUI.getScaleFactor(); | const double scaleFactor = fUI.getScaleFactor(); | ||||
const NSSize size = NSMakeSize(fUI.getWidth() / scaleFactor, fUI.getHeight() / scaleFactor); | const NSSize size = NSMakeSize(fUI.getWidth() / scaleFactor, fUI.getHeight() / scaleFactor); | ||||
NSView* const uiView = reinterpret_cast<NSView*>(fUI.getNativeWindowHandle()); | |||||
for (NSView* subview in [uiView subviews]) | |||||
{ | |||||
[subview setFrameSize:size]; | |||||
break; | |||||
} | |||||
[uiView setFrameSize:size]; | |||||
[fParentView setFrameSize:size]; | [fParentView setFrameSize:size]; | ||||
[fParentView setHidden:NO]; | |||||
} | } | ||||
private: | private: | ||||
@@ -368,7 +362,9 @@ private: | |||||
void setSize(const uint width, const uint height) | void setSize(const uint width, const uint height) | ||||
{ | { | ||||
const double scaleFactor = fUI.getScaleFactor(); | const double scaleFactor = fUI.getScaleFactor(); | ||||
[fParentView setFrameSize:NSMakeSize(width / scaleFactor, height / scaleFactor)]; | |||||
const NSSize size = NSMakeSize(width / scaleFactor, height / scaleFactor); | |||||
[fParentView setFrameSize:size]; | |||||
} | } | ||||
static void setSizeCallback(void* const ptr, const uint width, const uint height) | static void setSizeCallback(void* const ptr, const uint width, const uint height) | ||||
@@ -402,8 +398,9 @@ END_NAMESPACE_DISTRHO | |||||
- (id) initWithPreferredSize:(NSSize)size | - (id) initWithPreferredSize:(NSSize)size | ||||
{ | { | ||||
self = [super initWithFrame: NSMakeRect(0, 0, size.width, size.height)]; | |||||
[self setHidden:NO]; | |||||
ui = nullptr; | |||||
self = [super initWithFrame: NSMakeRect(0, 0, size.width, size.height)]; | |||||
[self setHidden:YES]; | |||||
return self; | return self; | ||||
} | } | ||||
@@ -307,7 +307,7 @@ public: | |||||
#endif | #endif | ||||
} | } | ||||
#if defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP) | |||||
#if DISTRHO_UI_USES_SIZE_REQUEST | |||||
void setWindowSizeFromHost(const uint width, const uint height) | void setWindowSizeFromHost(const uint width, const uint height) | ||||
{ | { | ||||
#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI | #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI | ||||
@@ -44,15 +44,15 @@ | |||||
#endif | #endif | ||||
#if defined(DISTRHO_PLUGIN_TARGET_AU) | #if defined(DISTRHO_PLUGIN_TARGET_AU) | ||||
# define DISTRHO_UI_USES_SCHEDULED_REPAINTS true | |||||
# define DISTRHO_UI_USES_SCHEDULED_REPAINTS 1 | |||||
#else | #else | ||||
# define DISTRHO_UI_USES_SCHEDULED_REPAINTS false | |||||
# define DISTRHO_UI_USES_SCHEDULED_REPAINTS 0 | |||||
#endif | #endif | ||||
#if defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP) | |||||
# define DISTRHO_UI_USES_SIZE_REQUEST true | |||||
#if defined(DISTRHO_PLUGIN_TARGET_CLAP) || defined(DISTRHO_PLUGIN_TARGET_VST3) | |||||
# define DISTRHO_UI_USES_SIZE_REQUEST 1 | |||||
#else | #else | ||||
# define DISTRHO_UI_USES_SIZE_REQUEST false | |||||
# define DISTRHO_UI_USES_SIZE_REQUEST 0 | |||||
#endif | #endif | ||||
#if defined(DISTRHO_PLUGIN_TARGET_AU) || defined(DISTRHO_PLUGIN_TARGET_VST2) | #if defined(DISTRHO_PLUGIN_TARGET_AU) || defined(DISTRHO_PLUGIN_TARGET_VST2) | ||||
@@ -234,11 +234,15 @@ public: | |||||
if (pData->view == nullptr) | if (pData->view == nullptr) | ||||
return; | return; | ||||
if (receivedReshapeDuringInit) | |||||
ui->uiReshape(getWidth(), getHeight()); | |||||
initializing = false; | initializing = false; | ||||
puglBackendLeave(pData->view); | puglBackendLeave(pData->view); | ||||
if (receivedReshapeDuringInit) | |||||
{ | |||||
puglBackendEnter(pData->view); | |||||
ui->uiReshape(getWidth(), getHeight()); | |||||
puglBackendLeave(pData->view); | |||||
} | |||||
} | } | ||||
// used for temporary windows (VST/CLAP get size without active/visible view) | // used for temporary windows (VST/CLAP get size without active/visible view) | ||||
@@ -254,7 +258,7 @@ public: | |||||
puglBackendEnter(pData->view); | puglBackendEnter(pData->view); | ||||
} | } | ||||
#if defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP) | |||||
#if DISTRHO_UI_USES_SIZE_REQUEST | |||||
void setSizeFromHost(const uint width, const uint height) | void setSizeFromHost(const uint width, const uint height) | ||||
{ | { | ||||
puglSetSizeAndDefault(pData->view, width, height); | puglSetSizeAndDefault(pData->view, width, height); | ||||
@@ -310,9 +314,9 @@ protected: | |||||
ui->uiScaleFactorChanged(scaleFactor); | ui->uiScaleFactorChanged(scaleFactor); | ||||
} | } | ||||
# if DISTRHO_UI_FILE_BROWSER | |||||
#if DISTRHO_UI_FILE_BROWSER | |||||
void onFileSelected(const char* filename) override; | void onFileSelected(const char* filename) override; | ||||
# endif | |||||
#endif | |||||
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginWindow) | DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginWindow) | ||||
}; | }; | ||||