macos: quick terminal uses padded notch mode if notch is visible (#7098)

Fixes #6612
This commit is contained in:
Mitchell Hashimoto
2025-04-15 09:04:44 -07:00
committed by GitHub
2 changed files with 20 additions and 7 deletions

View File

@ -495,14 +495,20 @@ class QuickTerminalController: BaseTerminalController {
private func onToggleFullscreen() {
// We ignore the configured fullscreen style and always use non-native
// because the way the quick terminal works doesn't support native.
//
let mode: FullscreenMode
if (NSApp.isFrontmost) {
// If we're frontmost and we have a notch then we keep padding
// so all lines of the terminal are visible.
if (window?.screen?.hasNotch ?? false) {
mode = .nonNativePaddedNotch
} else {
mode = .nonNative
}
} else {
// An additional detail is that if the is NOT frontmost, then our
// NSApp.presentationOptions will not take effect so we must always
// do the visible menu mode since we can't get rid of the menu.
let mode: FullscreenMode = if (NSApp.isFrontmost) {
.nonNative
} else {
.nonNativeVisibleMenu
mode = .nonNativeVisibleMenu
}
toggleFullscreen(mode: mode)

View File

@ -34,4 +34,11 @@ extension NSScreen {
return visibleFrame.height < (frame.height - max(menuHeight, notchInset) - boundaryAreaPadding)
}
/// Returns true if the screen has a visible notch (i.e., a non-zero safe area inset at the top).
var hasNotch: Bool {
// We assume that a top safe area means notch, since we don't currently
// know any other situation this is true.
return safeAreaInsets.top > 0
}
}