Browse Source

Custom puglSetWindowSize on macOS, needed for reaper

pull/309/head
falkTX 4 years ago
parent
commit
c6e3ea5b9d
1 changed files with 23 additions and 2 deletions
  1. +23
    -2
      dgl/src/pugl.cpp

+ 23
- 2
dgl/src/pugl.cpp View File

@@ -302,9 +302,30 @@ PuglStatus puglSetWindowSize(PuglView* const view, const uint width, const uint
view->defaultHeight = height;

#if defined(DISTRHO_OS_HAIKU) || defined(DISTRHO_OS_MAC)
// keep upstream behaviour
// replace the 2 views setFrame with setFrameSize
const PuglRect frame = { view->frame.x, view->frame.y, (double)width, (double)height };
return puglSetFrame(view, frame);
PuglInternals* const impl = view->impl;

// Update view frame to exactly the requested frame in Pugl coordinates
view->frame = frame;

const NSRect framePx = rectToNsRect(frame);
const NSRect framePt = nsRectToPoints(view, framePx);
if (impl->window)
{
// Resize window to fit new content rect
const NSRect screenPt = rectToScreen(viewScreen(view), framePt);
const NSRect winFrame = [impl->window frameRectForContentRect:screenPt];

[impl->window setFrame:winFrame display:NO];
}

// Resize views
const NSSize sizePx = NSMakeSize(frame.width, frame.height);
const NSSize sizePt = [impl->drawView convertSizeFromBacking:sizePx];

[impl->wrapperView setFrameSize:(impl->window ? sizePt : framePt.size)];
[impl->drawView setFrameSize:sizePt];
#elif defined(DISTRHO_OS_WINDOWS)
// matches upstream pugl, except we add SWP_NOMOVE flag
if (view->impl->hwnd)


Loading…
Cancel
Save