macos: add title override to restorable state
parent
6105344c31
commit
50bbced0c9
|
|
@ -83,7 +83,7 @@ class BaseTerminalController: NSWindowController,
|
||||||
|
|
||||||
/// An override title for the tab/window set by the user via prompt_tab_title.
|
/// An override title for the tab/window set by the user via prompt_tab_title.
|
||||||
/// When set, this takes precedence over the computed title from the terminal.
|
/// When set, this takes precedence over the computed title from the terminal.
|
||||||
var tabTitleOverride: String? = nil {
|
var titleOverride: String? = nil {
|
||||||
didSet { applyTitleToWindow() }
|
didSet { applyTitleToWindow() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -344,7 +344,7 @@ class BaseTerminalController: NSWindowController,
|
||||||
alert.alertStyle = .informational
|
alert.alertStyle = .informational
|
||||||
|
|
||||||
let textField = NSTextField(frame: NSRect(x: 0, y: 0, width: 250, height: 24))
|
let textField = NSTextField(frame: NSRect(x: 0, y: 0, width: 250, height: 24))
|
||||||
textField.stringValue = tabTitleOverride ?? window.title
|
textField.stringValue = titleOverride ?? window.title
|
||||||
alert.accessoryView = textField
|
alert.accessoryView = textField
|
||||||
|
|
||||||
alert.addButton(withTitle: "OK")
|
alert.addButton(withTitle: "OK")
|
||||||
|
|
@ -358,9 +358,9 @@ class BaseTerminalController: NSWindowController,
|
||||||
|
|
||||||
let newTitle = textField.stringValue
|
let newTitle = textField.stringValue
|
||||||
if newTitle.isEmpty {
|
if newTitle.isEmpty {
|
||||||
self.tabTitleOverride = nil
|
self.titleOverride = nil
|
||||||
} else {
|
} else {
|
||||||
self.tabTitleOverride = newTitle
|
self.titleOverride = newTitle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -764,7 +764,7 @@ class BaseTerminalController: NSWindowController,
|
||||||
|
|
||||||
private func applyTitleToWindow() {
|
private func applyTitleToWindow() {
|
||||||
guard let window else { return }
|
guard let window else { return }
|
||||||
window.title = tabTitleOverride ?? lastComputedTitle
|
window.title = titleOverride ?? lastComputedTitle
|
||||||
}
|
}
|
||||||
|
|
||||||
func pwdDidChange(to: URL?) {
|
func pwdDidChange(to: URL?) {
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,20 @@ import Cocoa
|
||||||
class TerminalRestorableState: Codable {
|
class TerminalRestorableState: Codable {
|
||||||
static let selfKey = "state"
|
static let selfKey = "state"
|
||||||
static let versionKey = "version"
|
static let versionKey = "version"
|
||||||
static let version: Int = 6
|
static let version: Int = 7
|
||||||
|
|
||||||
let focusedSurface: String?
|
let focusedSurface: String?
|
||||||
let surfaceTree: SplitTree<Ghostty.SurfaceView>
|
let surfaceTree: SplitTree<Ghostty.SurfaceView>
|
||||||
let effectiveFullscreenMode: FullscreenMode?
|
let effectiveFullscreenMode: FullscreenMode?
|
||||||
let tabColor: TerminalTabColor
|
let tabColor: TerminalTabColor
|
||||||
|
let titleOverride: String?
|
||||||
|
|
||||||
init(from controller: TerminalController) {
|
init(from controller: TerminalController) {
|
||||||
self.focusedSurface = controller.focusedSurface?.id.uuidString
|
self.focusedSurface = controller.focusedSurface?.id.uuidString
|
||||||
self.surfaceTree = controller.surfaceTree
|
self.surfaceTree = controller.surfaceTree
|
||||||
self.effectiveFullscreenMode = controller.fullscreenStyle?.fullscreenMode
|
self.effectiveFullscreenMode = controller.fullscreenStyle?.fullscreenMode
|
||||||
self.tabColor = (controller.window as? TerminalWindow)?.tabColor ?? .none
|
self.tabColor = (controller.window as? TerminalWindow)?.tabColor ?? .none
|
||||||
|
self.titleOverride = controller.titleOverride
|
||||||
}
|
}
|
||||||
|
|
||||||
init?(coder aDecoder: NSCoder) {
|
init?(coder aDecoder: NSCoder) {
|
||||||
|
|
@ -34,6 +36,7 @@ class TerminalRestorableState: Codable {
|
||||||
self.focusedSurface = v.value.focusedSurface
|
self.focusedSurface = v.value.focusedSurface
|
||||||
self.effectiveFullscreenMode = v.value.effectiveFullscreenMode
|
self.effectiveFullscreenMode = v.value.effectiveFullscreenMode
|
||||||
self.tabColor = v.value.tabColor
|
self.tabColor = v.value.tabColor
|
||||||
|
self.titleOverride = v.value.titleOverride
|
||||||
}
|
}
|
||||||
|
|
||||||
func encode(with coder: NSCoder) {
|
func encode(with coder: NSCoder) {
|
||||||
|
|
@ -100,6 +103,9 @@ class TerminalWindowRestoration: NSObject, NSWindowRestoration {
|
||||||
// Restore our tab color
|
// Restore our tab color
|
||||||
(window as? TerminalWindow)?.tabColor = state.tabColor
|
(window as? TerminalWindow)?.tabColor = state.tabColor
|
||||||
|
|
||||||
|
// Restore the tab title override
|
||||||
|
c.titleOverride = state.titleOverride
|
||||||
|
|
||||||
// Setup our restored state on the controller
|
// Setup our restored state on the controller
|
||||||
// Find the focused surface in surfaceTree
|
// Find the focused surface in surfaceTree
|
||||||
if let focusedStr = state.focusedSurface {
|
if let focusedStr = state.focusedSurface {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue