From fa3978e18ea5323ffc015794a614a5473aab1b40 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 29 Jun 2022 07:47:45 +0200 Subject: [PATCH] app: [macOS] use NSWindow.zoom for Maximized NSWindow.zoom is what the native window control calls when maximizing. Signed-off-by: Elias Naur --- app/os_macos.go | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/app/os_macos.go b/app/os_macos.go index efb0d48b..5868bb20 100644 --- a/app/os_macos.go +++ b/app/os_macos.go @@ -170,6 +170,16 @@ static void setTitle(CFTypeRef windowRef, CFTypeRef titleRef) { window.title = (__bridge NSString *)titleRef; } +static BOOL isWindowZoomed(CFTypeRef windowRef) { + NSWindow *window = (__bridge NSWindow *)windowRef; + return window.zoomed; +} + +static void zoomWindow(CFTypeRef windowRef) { + NSWindow *window = (__bridge NSWindow *)windowRef; + [window zoom:nil]; +} + static CFTypeRef layerForView(CFTypeRef viewRef) { NSView *view = (__bridge NSView *)viewRef; return (__bridge CFTypeRef)view.layer; @@ -336,21 +346,22 @@ func (w *window) Configure(options []Option) { fallthrough default: w.config.Mode = Maximized - r := C.getScreenFrame(w.window) // the screen size of the window - C.setScreenFrame(w.window, C.CGFloat(0), C.CGFloat(0), r.size.width, r.size.height) - w.config.Size = image.Pt(int(r.size.width), int(r.size.height)) w.setTitle(prev, cnf) + if !C.isWindowZoomed(w.window) { + C.zoomWindow(w.window) + } } case Windowed: switch prev.Mode { case Fullscreen: - w.config.Mode = Windowed C.toggleFullScreen(w.window) case Minimized: - w.config.Mode = Windowed C.unhideWindow(w.window) case Maximized: - w.config.Mode = Windowed + } + w.config.Mode = Windowed + if C.isWindowZoomed(w.window) { + C.zoomWindow(w.window) } w.setTitle(prev, cnf) if prev.Size != cnf.Size {