diff options
author | JP Cimalando <jp-dev@inbox.ru> | 2019-11-14 19:01:01 +0100 |
---|---|---|
committer | Filipe Coelho <falktx@falktx.com> | 2019-11-14 19:57:11 +0000 |
commit | 4c3b7d9630e2bdc32cfc054f0c7041cc02534e46 (patch) | |
tree | feecd3e317402a16747f3da65961852a0f0311da | |
parent | 30ba386bc69a7a799d29f2c5262cf209991f7efa (diff) |
Fix user-resizable embedded window in Reaper Mac
This will inhibit applying the auto-resize mask until
the initial size has been set in the PuglView. Initially,
DPF would set this size to (1, 1).
-rw-r--r-- | dgl/src/pugl/pugl_osx.m | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/dgl/src/pugl/pugl_osx.m b/dgl/src/pugl/pugl_osx.m index 80b99304..da595381 100644 --- a/dgl/src/pugl/pugl_osx.m +++ b/dgl/src/pugl/pugl_osx.m @@ -329,6 +329,7 @@ flagsChanged(NSView<PuglGenericView> *self, NSEvent *event) - (void) keyDown:(NSEvent*)event; - (void) keyUp:(NSEvent*)event; - (void) flagsChanged:(NSEvent*)event; +- (void) resizeWithOldSuperviewSize:(NSSize)oldSize; @end @@ -527,6 +528,21 @@ flagsChanged(NSView<PuglGenericView> *self, NSEvent *event) flagsChanged(self, event); } +- (void) resizeWithOldSuperviewSize:(NSSize)oldSize +{ + PuglView *pv = self->puglview; + + if (pv->width <= 1 && pv->height <= 1) + { + /* NOTE: if the view size was not initialized yet, don't perform an + autoresize; it fixes manual resizing in Reaper. + */ + return; + } + + [super resizeWithOldSuperviewSize:oldSize]; +} + @end #endif @@ -570,6 +586,7 @@ flagsChanged(NSView<PuglGenericView> *self, NSEvent *event) - (void) keyDown:(NSEvent*)event; - (void) keyUp:(NSEvent*)event; - (void) flagsChanged:(NSEvent*)event; +- (void) resizeWithOldSuperviewSize:(NSSize)oldSize; @end @implementation PuglCairoView @@ -749,6 +766,22 @@ flagsChanged(NSView<PuglGenericView> *self, NSEvent *event) { flagsChanged(self, event); } + +- (void) resizeWithOldSuperviewSize:(NSSize)oldSize +{ + PuglView *pv = self->puglview; + + if (pv->width <= 1 && pv->height <= 1) + { + /* NOTE: if the view size was not initialized yet, don't perform an + autoresize; it fixes manual resizing in Reaper. + */ + return; + } + + [super resizeWithOldSuperviewSize:oldSize]; +} + @end #endif |