summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJP Cimalando <jp-dev@inbox.ru>2019-11-14 19:01:01 +0100
committerFilipe Coelho <falktx@falktx.com>2019-11-14 19:57:11 +0000
commit4c3b7d9630e2bdc32cfc054f0c7041cc02534e46 (patch)
treefeecd3e317402a16747f3da65961852a0f0311da
parent30ba386bc69a7a799d29f2c5262cf209991f7efa (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.m33
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