mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-17 17:26:09 +03:00
Merge pull request #1782 from tt/avoid-coloring-when-using-native-tabs
Avoid coloring when using native tabs
This commit is contained in:
@ -173,6 +173,8 @@ class TerminalController: NSWindowController, NSWindowDelegate,
|
|||||||
window.titlebarFont = nil
|
window.titlebarFont = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
guard window.hasStyledTabs else { return }
|
||||||
|
|
||||||
// The titlebar is always updated. We don't need to worry about opacity
|
// The titlebar is always updated. We don't need to worry about opacity
|
||||||
// because we handle it here.
|
// because we handle it here.
|
||||||
let backgroundColor = OSColor(ghostty.config.backgroundColor)
|
let backgroundColor = OSColor(ghostty.config.backgroundColor)
|
||||||
@ -259,13 +261,6 @@ class TerminalController: NSWindowController, NSWindowDelegate,
|
|||||||
// when cascading.
|
// when cascading.
|
||||||
window.center()
|
window.center()
|
||||||
|
|
||||||
// Set the background color of the window
|
|
||||||
let backgroundColor = NSColor(ghostty.config.backgroundColor)
|
|
||||||
window.backgroundColor = backgroundColor
|
|
||||||
|
|
||||||
// This makes sure our titlebar renders correctly when there is a transparent background
|
|
||||||
window.titlebarColor = backgroundColor.withAlphaComponent(ghostty.config.backgroundOpacity)
|
|
||||||
|
|
||||||
// Make sure our theme is set on the window so styling is correct.
|
// Make sure our theme is set on the window so styling is correct.
|
||||||
if let windowTheme = ghostty.config.windowTheme {
|
if let windowTheme = ghostty.config.windowTheme {
|
||||||
window.windowTheme = .init(rawValue: windowTheme)
|
window.windowTheme = .init(rawValue: windowTheme)
|
||||||
@ -282,6 +277,15 @@ class TerminalController: NSWindowController, NSWindowDelegate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if window.hasStyledTabs {
|
||||||
|
// Set the background color of the window
|
||||||
|
let backgroundColor = NSColor(ghostty.config.backgroundColor)
|
||||||
|
window.backgroundColor = backgroundColor
|
||||||
|
|
||||||
|
// This makes sure our titlebar renders correctly when there is a transparent background
|
||||||
|
window.titlebarColor = backgroundColor.withAlphaComponent(ghostty.config.backgroundOpacity)
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize our content view to the SwiftUI root
|
// Initialize our content view to the SwiftUI root
|
||||||
window.contentView = NSHostingView(rootView: TerminalView(
|
window.contentView = NSHostingView(rootView: TerminalView(
|
||||||
ghostty: self.ghostty,
|
ghostty: self.ghostty,
|
||||||
|
@ -136,14 +136,8 @@ class TerminalWindow: NSWindow {
|
|||||||
|
|
||||||
updateResetZoomTitlebarButtonVisibility()
|
updateResetZoomTitlebarButtonVisibility()
|
||||||
|
|
||||||
// The remainder of the styles we only apply if we're on "auto" theming
|
// The remainder of this function only applies to styled tabs.
|
||||||
// because they conflict with the appearance being forced a certain
|
guard hasStyledTabs else { return }
|
||||||
// direction. Titlebar tabs are excluded (they always style the titlebar)
|
|
||||||
// because historically this is how they've always worked. So this
|
|
||||||
// exclusion only applies to native tabs. See issue #1709.
|
|
||||||
if let windowTheme, windowTheme != .auto && !titlebarTabs {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
titlebarSeparatorStyle = tabbedWindows != nil && !titlebarTabs ? .line : .none
|
titlebarSeparatorStyle = tabbedWindows != nil && !titlebarTabs ? .line : .none
|
||||||
|
|
||||||
@ -177,6 +171,20 @@ class TerminalWindow: NSWindow {
|
|||||||
|
|
||||||
// MARK: - Tab Bar Styling
|
// MARK: - Tab Bar Styling
|
||||||
|
|
||||||
|
// This is true if we should apply styles to the titlebar or tab bar.
|
||||||
|
var hasStyledTabs: Bool {
|
||||||
|
// If we have titlebar tabs then we always style.
|
||||||
|
guard !titlebarTabs else { return true }
|
||||||
|
|
||||||
|
// This should never happen, but if we don't have a theme set then
|
||||||
|
// we just style the tabs. Either response here is probably okay.
|
||||||
|
guard let windowTheme else { return true }
|
||||||
|
|
||||||
|
// We only style if the window theme is auto. Any other specific
|
||||||
|
// window theme type will always show up as that native theme.
|
||||||
|
return windowTheme == .auto
|
||||||
|
}
|
||||||
|
|
||||||
var hasVeryDarkBackground: Bool {
|
var hasVeryDarkBackground: Bool {
|
||||||
backgroundColor.luminance < 0.05
|
backgroundColor.luminance < 0.05
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user