From 71f6df9352c4d62bf9bd2ecbf7718bd8a31229db Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 21 Jul 2019 17:20:44 +0200 Subject: [PATCH] ui/app: (macOS) redraw when NSOpenGLView update is called When moving a window to another monitor, update is called when the opengl backing store updates its internal size. Signed-off-by: Elias Naur --- ui/app/gl_macos.m | 4 ++++ ui/app/os_macos.go | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ui/app/gl_macos.m b/ui/app/gl_macos.m index 165188fe..3cadd0a9 100644 --- a/ui/app/gl_macos.m +++ b/ui/app/gl_macos.m @@ -67,6 +67,10 @@ CVDisplayLinkRef displayLink; - (BOOL)isFlipped { return YES; } +- (void)update { + [super update]; + gio_onDraw((__bridge CFTypeRef)self); +} - (void)drawRect:(NSRect)r { gio_onDraw((__bridge CFTypeRef)self); } diff --git a/ui/app/os_macos.go b/ui/app/os_macos.go index 0aa4e2fd..49b86d87 100644 --- a/ui/app/os_macos.go +++ b/ui/app/os_macos.go @@ -170,8 +170,9 @@ func gio_onMouse(view C.CFTypeRef, cdir C.int, x, y, dx, dy C.CGFloat, ti C.doub //export gio_onDraw func gio_onDraw(view C.CFTypeRef) { viewDo(view, func(views viewMap, view C.CFTypeRef) { - w := views[view] - w.draw(true) + if w, exists := views[view]; exists { + w.draw(true) + } }) }