app: [macOS] use NSWindow.zoom for Maximized

NSWindow.zoom is what the native window control calls when maximizing.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2022-06-29 07:47:45 +02:00
parent 78d1eab950
commit fa3978e18e
+17 -6
View File
@@ -170,6 +170,16 @@ static void setTitle(CFTypeRef windowRef, CFTypeRef titleRef) {
window.title = (__bridge NSString *)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) { static CFTypeRef layerForView(CFTypeRef viewRef) {
NSView *view = (__bridge NSView *)viewRef; NSView *view = (__bridge NSView *)viewRef;
return (__bridge CFTypeRef)view.layer; return (__bridge CFTypeRef)view.layer;
@@ -336,21 +346,22 @@ func (w *window) Configure(options []Option) {
fallthrough fallthrough
default: default:
w.config.Mode = Maximized 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) w.setTitle(prev, cnf)
if !C.isWindowZoomed(w.window) {
C.zoomWindow(w.window)
}
} }
case Windowed: case Windowed:
switch prev.Mode { switch prev.Mode {
case Fullscreen: case Fullscreen:
w.config.Mode = Windowed
C.toggleFullScreen(w.window) C.toggleFullScreen(w.window)
case Minimized: case Minimized:
w.config.Mode = Windowed
C.unhideWindow(w.window) C.unhideWindow(w.window)
case Maximized: case Maximized:
w.config.Mode = Windowed }
w.config.Mode = Windowed
if C.isWindowZoomed(w.window) {
C.zoomWindow(w.window)
} }
w.setTitle(prev, cnf) w.setTitle(prev, cnf)
if prev.Size != cnf.Size { if prev.Size != cnf.Size {