Toggling visibility is now ignored when in fullscreen mode.

This commit is contained in:
Shaps Benkau
2025-01-31 15:41:03 +00:00
committed by Mitchell Hashimoto
parent c5508e7d19
commit 8d31f6ce2e
2 changed files with 13 additions and 1 deletions

View File

@ -709,11 +709,21 @@ class AppDelegate: NSObject,
/// 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) {
// Toggle visibility doesn't do anything if the focused window is native
// fullscreen.
guard let keyWindow = NSApp.keyWindow,
!keyWindow.styleMask.contains(.fullScreen) else { return }
// If we have focus, then we hide all windows. // If we have focus, then we hide all windows.
if NSApp.isActive { if NSApp.isActive {
// We need to keep track of the windows that were visible because we only // We need to keep track of the windows that were visible because we only
// want to bring back these windows if we remove the toggle. // want to bring back these windows if we remove the toggle.
self.hiddenWindows = NSApp.windows.filter { $0.isVisible }.map { Weak($0) } //
// We also ignore fullscreen windows because they don't hide anyways.
self.hiddenWindows = NSApp.windows.filter {
$0.isVisible &&
!$0.styleMask.contains(.fullScreen)
}.map { Weak($0) }
NSApp.hide(nil) NSApp.hide(nil)
return return
} }

View File

@ -470,6 +470,8 @@ pub const Action = union(enum) {
/// Ghostty becomes focused. When hiding all windows, focus is yielded /// Ghostty becomes focused. When hiding all windows, focus is yielded
/// to the next application as determined by the OS. /// to the next application as determined by the OS.
/// ///
/// Note: When the focused surface is fullscreen, this method does nothing.
///
/// This currently only works on macOS. /// This currently only works on macOS.
toggle_visibility: void, toggle_visibility: void,