From a2c80dac75ce95371d95c5447662177a46d4d174 Mon Sep 17 00:00:00 2001 From: Luciano Iam Date: Thu, 5 Aug 2021 09:57:10 +0200 Subject: [PATCH] Workaround for plugin window size on Mac Retina --- distrho/DistrhoUI_macOS.mm | 11 +++++++++++ distrho/src/DistrhoUI.cpp | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/distrho/DistrhoUI_macOS.mm b/distrho/DistrhoUI_macOS.mm index 39b85c21..8171b67b 100644 --- a/distrho/DistrhoUI_macOS.mm +++ b/distrho/DistrhoUI_macOS.mm @@ -32,4 +32,15 @@ #define PuglWindowDelegate DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WindowDelegate) #define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WrapperView) +#import + #import "src/pugl.mm" + +START_NAMESPACE_DISTRHO + +float getMacMainScreenBackingScaleFactor() +{ + return (float)[NSScreen mainScreen].backingScaleFactor; +} + +END_NAMESPACE_DISTRHO diff --git a/distrho/src/DistrhoUI.cpp b/distrho/src/DistrhoUI.cpp index 3052ef4b..fb5c5c9e 100644 --- a/distrho/src/DistrhoUI.cpp +++ b/distrho/src/DistrhoUI.cpp @@ -184,12 +184,23 @@ void UI::uiFileBrowserSelected(const char*) /* ------------------------------------------------------------------------------------------------------------ * UI Resize Handling, internal */ +# if DISTRHO_OS_MAC +extern float getMacMainScreenBackingScaleFactor(); +# endif // DISTRHO_OS_MAC + void UI::onResize(const ResizeEvent& ev) { UIWidget::onResize(ev); +# if DISTRHO_OS_MAC + float k = getMacMainScreenBackingScaleFactor(); + const uint width = ev.size.getWidth() / k; + const uint height = ev.size.getHeight() / k; +# else const uint width = ev.size.getWidth(); const uint height = ev.size.getHeight(); +# endif // DISTRHO_OS_MAC + uiData->setSizeCallback(width, height); } #endif // !DISTRHO_PLUGIN_HAS_EXTERNAL_UI