mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-04-20 00:18:53 +03:00

Uses a custom toolbar that populates itself with a centered text field and provides a method to set the text.
45 lines
1.3 KiB
Swift
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]
|
|
}
|
|
}
|