Browse Source

Fix vst3 initial size on macOS; More geometry constraint fixing

pull/357/head
falkTX 3 years ago
parent
commit
d0413dfbd6
3 changed files with 31 additions and 6 deletions
  1. +8
    -2
      dgl/src/Window.cpp
  2. +11
    -2
      distrho/src/DistrhoUI.cpp
  3. +12
    -2
      distrho/src/DistrhoUIVST3.cpp

+ 8
- 2
dgl/src/Window.cpp View File

@@ -201,8 +201,14 @@ void Window::setSize(uint width, uint height)
if (pData->isEmbed)
{
const double scaleFactor = pData->scaleFactor;
const uint minWidth = static_cast<uint>(pData->minWidth * scaleFactor + 0.5);
const uint minHeight = static_cast<uint>(pData->minHeight * scaleFactor + 0.5);
uint minWidth = pData->minWidth;
uint minHeight = pData->minHeight;

if (pData->autoScaling && scaleFactor != 1.0)
{
minWidth *= scaleFactor;
minHeight *= scaleFactor;
}

// handle geometry constraints here
if (width < minWidth)


+ 11
- 2
distrho/src/DistrhoUI.cpp View File

@@ -199,7 +199,7 @@ UI::UI(const uint width, const uint height, const bool automaticallyScaleAndSetA
Widget::setSize(width, height);

if (automaticallyScaleAndSetAsMinimumSize)
setGeometryConstraints(width, height, true, true);
setGeometryConstraints(width, height, true, true, true);
}
#else
// unused
@@ -383,7 +383,16 @@ void UI::onResize(const ResizeEvent& ev)
// NOTE: only used for VST3
void UI::requestSizeChange(const uint width, const uint height)
{
uiData->setSizeCallback(width, height);
# ifdef DISTRHO_PLUGIN_TARGET_VST3
if (uiData->initializing)
uiData->window->setSizeForVST3(width, height);
else
uiData->setSizeCallback(width, height);
# else
// unused
(void)width;
(void)height;
# endif
}
#endif



+ 12
- 2
distrho/src/DistrhoUIVST3.cpp View File

@@ -257,6 +257,7 @@ public:
rect->right /= scaleFactor;
rect->bottom /= scaleFactor;
#endif
d_stdout("getSize request returning %i %i", rect->right, rect->bottom);
return V3_OK;
}

@@ -300,6 +301,11 @@ public:
uint minimumWidth, minimumHeight;
bool keepAspectRatio;
fUI.getGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio);
#ifdef DISTRHO_OS_MAC
const double scaleFactor = fUI.getScaleFactor();
minimumWidth /= scaleFactor;
minimumHeight /= scaleFactor;
#endif
applyGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio, rect);
return V3_TRUE;
}
@@ -1298,7 +1304,7 @@ struct dpf_plugin_view : v3_plugin_view_cpp {
#endif
rect->right = view->nextWidth;
rect->bottom = view->nextHeight;
tmpUI.quit();
d_stdout("dpf_plugin_view::get_size => %p | next size %u %u with scale factor %f", self, view->nextWidth, view->nextHeight, lastScaleFactor);
return V3_OK;
}

@@ -1377,7 +1383,11 @@ struct dpf_plugin_view : v3_plugin_view_cpp {
uint minimumWidth, minimumHeight;
bool keepAspectRatio;
tmpUI.getGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio);
tmpUI.quit();
#ifdef DISTRHO_OS_MAC
const double scaleFactor = tmpUI.getScaleFactor();
minimumWidth /= scaleFactor;
minimumHeight /= scaleFactor;
#endif
applyGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio, rect);
return V3_TRUE;
}


Loading…
Cancel
Save