mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
Refactor to use height/width from ghostty configuration
This commit is contained in:

committed by
Mitchell Hashimoto

parent
f73c1a2c59
commit
8838ebf02a
@ -753,16 +753,6 @@ class AppDelegate: NSObject,
|
||||
quickController.toggle()
|
||||
}
|
||||
|
||||
@IBAction func returnToDefaultSize(_ sender: Any) {
|
||||
guard let window = NSApp.keyWindow else { return }
|
||||
let currentOrigin = window.frame.origin
|
||||
let newFrame = NSRect(
|
||||
origin: currentOrigin,
|
||||
size: WindowConfig.defaultSize
|
||||
)
|
||||
window.setFrame(newFrame, display: true)
|
||||
}
|
||||
|
||||
/// Toggles visibility of all Ghosty Terminal windows. When hidden, activates Ghostty as the frontmost application
|
||||
@IBAction func toggleVisibility(_ sender: Any) {
|
||||
// If we have focus, then we hide all windows.
|
||||
@ -814,10 +804,6 @@ class AppDelegate: NSObject,
|
||||
}
|
||||
}
|
||||
|
||||
private enum WindowConfig {
|
||||
static let defaultSize = CGSize(width: 800, height: 600)
|
||||
}
|
||||
|
||||
private struct ToggleVisibilityState {
|
||||
let hiddenWindows: [Weak<NSWindow>]
|
||||
let keyWindow: Weak<NSWindow>?
|
||||
@ -847,23 +833,3 @@ class AppDelegate: NSObject,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension AppDelegate: NSMenuItemValidation {
|
||||
func validateMenuItem(_ item: NSMenuItem) -> Bool {
|
||||
switch item.action {
|
||||
case #selector(returnToDefaultSize):
|
||||
guard let focusedWindow = NSApp.keyWindow else {
|
||||
return false
|
||||
}
|
||||
if focusedWindow.styleMask.contains(.fullScreen) {
|
||||
return false
|
||||
}
|
||||
if focusedWindow.frame.size == WindowConfig.defaultSize {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -578,6 +578,23 @@ class TerminalController: BaseTerminalController {
|
||||
window.close()
|
||||
}
|
||||
|
||||
@IBAction func returnToDefaultSize(_ sender: Any) {
|
||||
guard
|
||||
let window = NSApp.keyWindow,
|
||||
let initialWidth = ghostty.config.windowWidth,
|
||||
let initialHeight = ghostty.config.windowHeight
|
||||
else { return }
|
||||
let currentOrigin = window.frame.origin
|
||||
let newFrame = NSRect(
|
||||
origin: currentOrigin,
|
||||
size: .init(
|
||||
width: CGFloat(initialWidth),
|
||||
height: CGFloat(initialHeight)
|
||||
)
|
||||
)
|
||||
window.setFrame(newFrame, display: true)
|
||||
}
|
||||
|
||||
@IBAction override func closeWindow(_ sender: Any?) {
|
||||
guard let window = window else { return }
|
||||
guard let tabGroup = window.tabGroup else {
|
||||
@ -823,3 +840,32 @@ class TerminalController: BaseTerminalController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extension TerminalController: NSMenuItemValidation {
|
||||
func validateMenuItem(_ item: NSMenuItem) -> Bool {
|
||||
switch item.action {
|
||||
case #selector(returnToDefaultSize):
|
||||
guard let focusedWindow = NSApp.keyWindow else {
|
||||
return false
|
||||
}
|
||||
if focusedWindow.styleMask.contains(.fullScreen) {
|
||||
return false
|
||||
}
|
||||
guard
|
||||
let windowWidth = ghostty.config.windowWidth,
|
||||
let windowHeight = ghostty.config.windowHeight,
|
||||
focusedWindow.frame.size != .init(
|
||||
width: CGFloat(windowWidth),
|
||||
height: CGFloat(windowHeight)
|
||||
)
|
||||
else {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,6 +141,20 @@ extension Ghostty {
|
||||
return String(cString: ptr)
|
||||
}
|
||||
|
||||
var windowHeight: Int16? {
|
||||
guard let config = self.config else { return nil }
|
||||
var v: Int16 = 0
|
||||
let key = "window-height"
|
||||
return ghostty_config_get(config, &v, key, UInt(key.count)) ? v : nil
|
||||
}
|
||||
|
||||
var windowWidth: Int16? {
|
||||
guard let config = self.config else { return nil }
|
||||
var v: Int16 = 0
|
||||
let key = "window-width"
|
||||
return ghostty_config_get(config, &v, key, UInt(key.count)) ? v : nil
|
||||
}
|
||||
|
||||
var windowPositionX: Int16? {
|
||||
guard let config = self.config else { return nil }
|
||||
var v: Int16 = 0
|
||||
|
Reference in New Issue
Block a user