diff --git a/macos/Sources/Helpers/FullScreenHandler.swift b/macos/Sources/Helpers/FullScreenHandler.swift index 2fe650587..2430ca942 100644 --- a/macos/Sources/Helpers/FullScreenHandler.swift +++ b/macos/Sources/Helpers/FullScreenHandler.swift @@ -93,7 +93,7 @@ class FullScreenHandler { var previousTabGroup: NSWindowTabGroup? window.styleMask.remove(.titled) // Set frame to screen size, accounting for the menu bar if needed - let frame = calculateFullscreenFrame(screenFrame: screen.frame, subtractMenu: !hideMenu) + let frame = calculateFullscreenFrame(screen: screen, subtractMenu: !hideMenu) window.setFrame(frame, display: true) // Focus window @@ -116,12 +116,23 @@ class FullScreenHandler { var previousTabGroup: NSWindowTabGroup? NSApp.presentationOptions.remove(.autoHideDock) } - func calculateFullscreenFrame(screenFrame: NSRect, subtractMenu: Bool)->NSRect { + func calculateFullscreenFrame(screen: NSScreen, subtractMenu: Bool)->NSRect { if (subtractMenu) { - let menuHeight = NSApp.mainMenu?.menuBarHeight ?? 0 - return NSMakeRect(screenFrame.minX, screenFrame.minY, screenFrame.width, screenFrame.height - menuHeight) + if let menuHeight = NSApp.mainMenu?.menuBarHeight { + var padding: CGFloat = 0 + if #available(macOS 12, *) { + padding = screen.safeAreaInsets.top; + } + + return NSMakeRect( + screen.frame.minX, + screen.frame.minY, + screen.frame.width, + screen.frame.height - (menuHeight + padding) + ) + } } - return screenFrame + return screen.frame } func leaveFullscreen(window: NSWindow) {