commit 34d1547e311ba675a59040d65128167cf8c48a24
parent 0441f995d4af201e6ab97881047972e2bba21bfa
Author: falkTX <falktx@falktx.com>
Date: Sat, 10 Sep 2022 00:32:11 +0100
Fix default UI size after introducing the initial size macros
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
2 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/distrho/src/DistrhoUI.cpp b/distrho/src/DistrhoUI.cpp
@@ -174,28 +174,44 @@ ExternalWindow::PrivateData
#else
PluginWindow&
#endif
-UI::PrivateData::createNextWindow(UI* const ui, const uint width, const uint height)
+UI::PrivateData::createNextWindow(UI* const ui, uint width, uint height, const bool adjustForScaleFactor)
{
UI::PrivateData* const pData = s_nextPrivateData;
-#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
+ #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
+ const double scaleFactor = d_isNotZero(pData->scaleFactor) ? pData->scaleFactor : getDesktopScaleFactor(pData->winId);
+
+ if (adjustForScaleFactor && d_isNotZero(scaleFactor) && d_isNotEqual(scaleFactor, 1.0))
+ {
+ width *= scaleFactor;
+ height *= scaleFactor;
+ }
+
pData->window = new PluginWindow(ui, pData->app);
ExternalWindow::PrivateData ewData;
ewData.parentWindowHandle = pData->winId;
ewData.width = width;
ewData.height = height;
- ewData.scaleFactor = pData->scaleFactor != 0.0 ? pData->scaleFactor : getDesktopScaleFactor(pData->winId);
+ ewData.scaleFactor = scaleFactor;
ewData.title = DISTRHO_PLUGIN_NAME;
ewData.isStandalone = DISTRHO_UI_IS_STANDALONE;
return ewData;
-#else
- pData->window = new PluginWindow(ui, pData->app, pData->winId, width, height, pData->scaleFactor);
+ #else
+ const double scaleFactor = pData->scaleFactor;
+
+ if (adjustForScaleFactor && d_isNotZero(scaleFactor) && d_isNotEqual(scaleFactor, 1.0))
+ {
+ width *= scaleFactor;
+ height *= scaleFactor;
+ }
+
+ pData->window = new PluginWindow(ui, pData->app, pData->winId, width, height, scaleFactor);
// If there are no callbacks, this is most likely a temporary window, so ignore idle callbacks
if (pData->callbacksPtr == nullptr)
pData->window->setIgnoreIdleCallbacks();
return pData->window.getObject();
-#endif
+ #endif
}
/* ------------------------------------------------------------------------------------------------------------
@@ -207,10 +223,16 @@ UI::UI(const uint width, const uint height, const bool automaticallyScaleAndSetA
width == 0 ? DISTRHO_UI_DEFAULT_WIDTH :
#endif
width,
+ #ifdef DISTRHO_UI_DEFAULT_HEIGHT
+ height == 0 ? DISTRHO_UI_DEFAULT_HEIGHT :
+ #endif
+ height,
#ifdef DISTRHO_UI_DEFAULT_WIDTH
- height == 0 ? DISTRHO_UI_DEFAULT_WIDTH :
+ width == 0
+ #else
+ false
#endif
- height)),
+ )),
uiData(UI::PrivateData::s_nextPrivateData)
{
#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI
diff --git a/distrho/src/DistrhoUIPrivateData.hpp b/distrho/src/DistrhoUIPrivateData.hpp
@@ -424,9 +424,9 @@ struct UI::PrivateData {
static UI::PrivateData* s_nextPrivateData;
#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
- static ExternalWindow::PrivateData createNextWindow(UI* ui, uint width, uint height);
+ static ExternalWindow::PrivateData createNextWindow(UI* ui, uint width, uint height, bool adjustForScaleFactor);
#else
- static PluginWindow& createNextWindow(UI* ui, uint width, uint height);
+ static PluginWindow& createNextWindow(UI* ui, uint width, uint height, bool adjustForScaleFactor);
#endif
};