diff --git a/distrho/src/DistrhoUI.cpp b/distrho/src/DistrhoUI.cpp index 5f0527cc..12cffb10 100644 --- a/distrho/src/DistrhoUI.cpp +++ b/distrho/src/DistrhoUI.cpp @@ -432,7 +432,7 @@ void UI::onResize(const ResizeEvent& ev) { UIWidget::onResize(ev); - #if !(defined(DISTRHO_PLUGIN_TARGET_VST3) || defined(DISTRHO_PLUGIN_TARGET_CLAP)) + #if ! DISTRHO_UI_USES_SIZE_REQUEST if (uiData->initializing) return; @@ -442,10 +442,10 @@ void UI::onResize(const ResizeEvent& ev) #endif } -// NOTE: only used for VST3 and CLAP +// NOTE: only used for CLAP and VST3 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) uiData->window->setSizeFromHost(width, height); else diff --git a/distrho/src/DistrhoUIAU.mm b/distrho/src/DistrhoUIAU.mm index af01d224..c0987f51 100644 --- a/distrho/src/DistrhoUIAU.mm +++ b/distrho/src/DistrhoUIAU.mm @@ -157,15 +157,9 @@ public: { const double scaleFactor = fUI.getScaleFactor(); const NSSize size = NSMakeSize(fUI.getWidth() / scaleFactor, fUI.getHeight() / scaleFactor); - NSView* const uiView = reinterpret_cast(fUI.getNativeWindowHandle()); - for (NSView* subview in [uiView subviews]) - { - [subview setFrameSize:size]; - break; - } - [uiView setFrameSize:size]; [fParentView setFrameSize:size]; + [fParentView setHidden:NO]; } private: @@ -368,7 +362,9 @@ private: void setSize(const uint width, const uint height) { 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) @@ -402,8 +398,9 @@ END_NAMESPACE_DISTRHO - (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; } diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp index 1865fdaa..80c494f2 100644 --- a/distrho/src/DistrhoUIInternal.hpp +++ b/distrho/src/DistrhoUIInternal.hpp @@ -307,7 +307,7 @@ public: #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) { #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI diff --git a/distrho/src/DistrhoUIPrivateData.hpp b/distrho/src/DistrhoUIPrivateData.hpp index dc0296a0..dde2d2c2 100644 --- a/distrho/src/DistrhoUIPrivateData.hpp +++ b/distrho/src/DistrhoUIPrivateData.hpp @@ -44,15 +44,15 @@ #endif #if defined(DISTRHO_PLUGIN_TARGET_AU) -# define DISTRHO_UI_USES_SCHEDULED_REPAINTS true +# define DISTRHO_UI_USES_SCHEDULED_REPAINTS 1 #else -# define DISTRHO_UI_USES_SCHEDULED_REPAINTS false +# define DISTRHO_UI_USES_SCHEDULED_REPAINTS 0 #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 -# define DISTRHO_UI_USES_SIZE_REQUEST false +# define DISTRHO_UI_USES_SIZE_REQUEST 0 #endif #if defined(DISTRHO_PLUGIN_TARGET_AU) || defined(DISTRHO_PLUGIN_TARGET_VST2) @@ -234,11 +234,15 @@ public: if (pData->view == nullptr) return; - if (receivedReshapeDuringInit) - ui->uiReshape(getWidth(), getHeight()); - initializing = false; 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) @@ -254,7 +258,7 @@ public: 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) { puglSetSizeAndDefault(pData->view, width, height); @@ -310,9 +314,9 @@ protected: ui->uiScaleFactorChanged(scaleFactor); } -# if DISTRHO_UI_FILE_BROWSER + #if DISTRHO_UI_FILE_BROWSER void onFileSelected(const char* filename) override; -# endif + #endif DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginWindow) };