commit e7c852e9adb692e2b75993cccdec3fb8f3c9b443
parent 3a84bbb3ebbba9a02a36e65a0048f767f8b5cbd0
Author: falkTX <falktx@falktx.com>
Date: Tue, 27 Feb 2024 14:56:31 +0100
Fix AU for retina
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
4 files changed, 26 insertions(+), 25 deletions(-)
diff --git 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
@@ -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<NSView*>(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
@@ -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
@@ -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)
};