Took another look through #7504 after the merge and realized that the logic behind the `hasWindowButtons` property wasn't quite sound. It would return `false` if either _at least one_ button were missing in the `standardWindowButton(.theButton) == nil` sense, or if _all_ buttons were hidden in the `isHidden` sense. With this PR, the logic is rectified: `false` if _all_ buttons are missing or hidden in any sense, otherwise `true`. In practice, I suppose Ghostty won't ever instantiate a `TerminalWindow` where `standardWindowButton(.theButton) == nil`, but might as well get it right and sleep better at night.pull/7531/head
commit
08101b0bc5
|
|
@ -45,15 +45,14 @@ class TerminalWindow: NSWindow {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// false if all three traffic lights are missing/hidden, otherwise true
|
||||||
private var hasWindowButtons: Bool {
|
private var hasWindowButtons: Bool {
|
||||||
get {
|
get {
|
||||||
if let close = standardWindowButton(.closeButton),
|
// if standardWindowButton(.theButton) == nil, the button isn't there, so coalesce to true
|
||||||
let miniaturize = standardWindowButton(.miniaturizeButton),
|
let closeIsHidden = standardWindowButton(.closeButton)?.isHiddenOrHasHiddenAncestor ?? true
|
||||||
let zoom = standardWindowButton(.zoomButton) {
|
let miniaturizeIsHidden = standardWindowButton(.miniaturizeButton)?.isHiddenOrHasHiddenAncestor ?? true
|
||||||
return !(close.isHidden && miniaturize.isHidden && zoom.isHidden)
|
let zoomIsHidden = standardWindowButton(.zoomButton)?.isHiddenOrHasHiddenAncestor ?? true
|
||||||
} else {
|
return !(closeIsHidden && miniaturizeIsHidden && zoomIsHidden)
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue