ghostty/macos/Sources/Features/Terminal/TerminalToolbar.swift
Qwerasd 308f8cce36 macOS: center window title when titlebar tabs enabled
Uses a custom toolbar that populates itself with a centered text field and provides a method to set the text.
2024-01-31 16:16:41 -05:00

45 lines
1.3 KiB
Swift

// Custom NSToolbar subclass that displays a centered window title,
// in order to accommodate the titlebar tabs feature.
import Foundation
import Cocoa
import SwiftUI
class TerminalToolbar: NSToolbar, NSToolbarDelegate {
static private let TitleIdentifier = NSToolbarItem.Identifier("TitleText")
private let TitleTextField = NSTextField(
labelWithString: "👻 Ghostty"
)
func setTitleText(_ text: String) {
self.TitleTextField.stringValue = text
}
override init(identifier: NSToolbar.Identifier) {
super.init(identifier: identifier)
delegate = self
if #available(macOS 13.0, *) {
centeredItemIdentifiers.insert(Self.TitleIdentifier)
} else {
centeredItemIdentifier = Self.TitleIdentifier
}
}
func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
guard itemIdentifier == Self.TitleIdentifier else { return nil }
let toolbarItem = NSToolbarItem(itemIdentifier: itemIdentifier)
toolbarItem.isEnabled = true
toolbarItem.view = self.TitleTextField
return toolbarItem
}
func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [Self.TitleIdentifier]
}
func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [Self.TitleIdentifier]
}
}