mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
misc cleanups
This commit is contained in:
@ -90,9 +90,6 @@ class QuickTerminalController: BaseTerminalController {
|
||||
delegate: self
|
||||
))
|
||||
|
||||
// Change the collection behavior of the window depending on the configuration.
|
||||
window.collectionBehavior = derivedConfig.quickTerminalSpaceBehavior.collectionBehavior
|
||||
|
||||
// Animate the window in
|
||||
animateIn()
|
||||
}
|
||||
@ -122,23 +119,24 @@ class QuickTerminalController: BaseTerminalController {
|
||||
if derivedConfig.quickTerminalAutoHide {
|
||||
switch derivedConfig.quickTerminalSpaceBehavior {
|
||||
case .remain:
|
||||
if self.window?.isOnActiveSpace == true {
|
||||
// If we lose focus on the active space, then we can animate out
|
||||
animateOut()
|
||||
}
|
||||
// If we lose focus on the active space, then we can animate out
|
||||
animateOut()
|
||||
|
||||
case .move:
|
||||
// Check if the reason for losing focus is due to an active space change
|
||||
let currentActiveSpace = CGSGetActiveSpace(CGSMainConnectionID())
|
||||
if previousActiveSpace == currentActiveSpace {
|
||||
// If we lose focus on the active space, then we can animate out
|
||||
// We haven't moved spaces. We lost focus to another app on the
|
||||
// current space. Animate out.
|
||||
animateOut()
|
||||
} else {
|
||||
// If we're from different space, then we bring the window back
|
||||
// We've moved to a different space. Bring the quick terminal back
|
||||
// into view.
|
||||
DispatchQueue.main.async {
|
||||
self.window?.makeKeyAndOrderFront(nil)
|
||||
}
|
||||
|
||||
self.previousActiveSpace = currentActiveSpace
|
||||
}
|
||||
self.previousActiveSpace = currentActiveSpace
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -320,6 +318,14 @@ class QuickTerminalController: BaseTerminalController {
|
||||
}
|
||||
|
||||
private func animateWindowOut(window: NSWindow, to position: QuickTerminalPosition) {
|
||||
// If the window isn't on our active space then we don't animate, we just
|
||||
// hide it.
|
||||
if !window.isOnActiveSpace {
|
||||
self.previousApp = nil
|
||||
window.orderOut(self)
|
||||
return
|
||||
}
|
||||
|
||||
// We always animate out to whatever screen the window is actually on.
|
||||
guard let screen = window.screen ?? NSScreen.main else { return }
|
||||
|
||||
@ -355,6 +361,9 @@ class QuickTerminalController: BaseTerminalController {
|
||||
private func syncAppearance() {
|
||||
guard let window else { return }
|
||||
|
||||
// Change the collection behavior of the window depending on the configuration.
|
||||
window.collectionBehavior = derivedConfig.quickTerminalSpaceBehavior.collectionBehavior
|
||||
|
||||
// If our window is not visible, then no need to sync the appearance yet.
|
||||
// Some APIs such as window blur have no effect unless the window is visible.
|
||||
guard window.isVisible else { return }
|
||||
@ -433,9 +442,6 @@ class QuickTerminalController: BaseTerminalController {
|
||||
// Update our derived config
|
||||
self.derivedConfig = DerivedConfig(config)
|
||||
|
||||
// Update window.collectionBehavior
|
||||
self.window?.collectionBehavior = derivedConfig.quickTerminalSpaceBehavior.collectionBehavior
|
||||
|
||||
syncAppearance()
|
||||
}
|
||||
|
||||
|
@ -1568,10 +1568,20 @@ keybind: Keybinds = .{},
|
||||
@"quick-terminal-autohide": bool = true,
|
||||
|
||||
/// This configuration option determines the behavior of the quick terminal
|
||||
/// when switching between spaces. If set to `move`, the quick terminal will
|
||||
/// be moved to the space where the focused window is. If set to `remain`,
|
||||
/// the quick terminal will stay only in the space where it was originally opened and
|
||||
/// will not follow when switching to another space.
|
||||
/// when switching between macOS spaces. macOS spaces are virtual desktops
|
||||
/// that can be manually created or are automatically created when an
|
||||
/// application is in full-screen mode.
|
||||
///
|
||||
/// Valid values are:
|
||||
///
|
||||
/// * `move` - When switching to another space, the quick terminal will
|
||||
/// also moved to the current space.
|
||||
///
|
||||
/// * `remain` - The quick terminal will stay only in the space where it
|
||||
/// was originally opened and will not follow when switching to another
|
||||
/// space.
|
||||
///
|
||||
/// The default value is `move`.
|
||||
@"quick-terminal-space-behavior": QuickTerminalSpaceBehavior = .move,
|
||||
|
||||
/// Whether to enable shell integration auto-injection or not. Shell integration
|
||||
|
Reference in New Issue
Block a user