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()
|
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
|
/// Toggles visibility of all Ghosty Terminal windows. When hidden, activates Ghostty as the frontmost application
|
||||||
@IBAction func toggleVisibility(_ sender: Any) {
|
@IBAction func toggleVisibility(_ sender: Any) {
|
||||||
// If we have focus, then we hide all windows.
|
// 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 {
|
private struct ToggleVisibilityState {
|
||||||
let hiddenWindows: [Weak<NSWindow>]
|
let hiddenWindows: [Weak<NSWindow>]
|
||||||
let keyWindow: 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()
|
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?) {
|
@IBAction override func closeWindow(_ sender: Any?) {
|
||||||
guard let window = window else { return }
|
guard let window = window else { return }
|
||||||
guard let tabGroup = window.tabGroup else {
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -140,7 +140,21 @@ extension Ghostty {
|
|||||||
guard let ptr = v else { return "" }
|
guard let ptr = v else { return "" }
|
||||||
return String(cString: ptr)
|
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? {
|
var windowPositionX: Int16? {
|
||||||
guard let config = self.config else { return nil }
|
guard let config = self.config else { return nil }
|
||||||
var v: Int16 = 0
|
var v: Int16 = 0
|
||||||
|
Reference in New Issue
Block a user