diff --git a/macos/Sources/Features/Terminal/BaseTerminalController.swift b/macos/Sources/Features/Terminal/BaseTerminalController.swift index 1bfae1674..552f864ee 100644 --- a/macos/Sources/Features/Terminal/BaseTerminalController.swift +++ b/macos/Sources/Features/Terminal/BaseTerminalController.swift @@ -66,24 +66,6 @@ class BaseTerminalController: NSWindowController, /// Fullscreen state management. private(set) var fullscreenStyle: FullscreenStyle? - /// The current effective fullscreen mode. - /// This is non-nil only while the window is in fullscreen. - var effectiveFullscreenMode: FullscreenMode? { - guard let fullscreenStyle, fullscreenStyle.isFullscreen else { - return nil - } - - switch fullscreenStyle { - case is NativeFullscreen: return .native - case is NonNativeFullscreen: return .nonNative - case is NonNativeFullscreenPaddedNotch: return .nonNativePaddedNotch - case is NonNativeFullscreenVisibleMenu: return .nonNativeVisibleMenu - default: - assertionFailure("Missing case here") - return nil - } - } - /// Event monitor (see individual events for why) private var eventMonitor: Any? = nil diff --git a/macos/Sources/Features/Terminal/TerminalRestorable.swift b/macos/Sources/Features/Terminal/TerminalRestorable.swift index b4691f2ca..71e54b612 100644 --- a/macos/Sources/Features/Terminal/TerminalRestorable.swift +++ b/macos/Sources/Features/Terminal/TerminalRestorable.swift @@ -13,7 +13,7 @@ class TerminalRestorableState: Codable { init(from controller: TerminalController) { self.focusedSurface = controller.focusedSurface?.id.uuidString self.surfaceTree = controller.surfaceTree - self.effectiveFullscreenMode = controller.effectiveFullscreenMode + self.effectiveFullscreenMode = controller.fullscreenStyle?.fullscreenMode } init?(coder aDecoder: NSCoder) { diff --git a/macos/Sources/Helpers/Fullscreen.swift b/macos/Sources/Helpers/Fullscreen.swift index 2ce9baea8..78c967661 100644 --- a/macos/Sources/Helpers/Fullscreen.swift +++ b/macos/Sources/Helpers/Fullscreen.swift @@ -31,6 +31,7 @@ enum FullscreenMode: String, Codable { /// Protocol that must be implemented by all fullscreen styles. protocol FullscreenStyle { var delegate: FullscreenDelegate? { get set } + var fullscreenMode: FullscreenMode { get } var isFullscreen: Bool { get } var supportsTabs: Bool { get } init?(_ window: NSWindow) @@ -87,6 +88,7 @@ class FullscreenBase { /// macOS native fullscreen. This is the typical behavior you get by pressing the green fullscreen /// button on regular titlebars. class NativeFullscreen: FullscreenBase, FullscreenStyle { + var fullscreenMode: FullscreenMode { .native } var isFullscreen: Bool { window.styleMask.contains(.fullScreen) } var supportsTabs: Bool { true } @@ -127,6 +129,8 @@ class NativeFullscreen: FullscreenBase, FullscreenStyle { } class NonNativeFullscreen: FullscreenBase, FullscreenStyle { + var fullscreenMode: FullscreenMode { .nonNative } + // Non-native fullscreen never supports tabs because tabs require // the "titled" style and we don't have it for non-native fullscreen. var supportsTabs: Bool { false } @@ -439,10 +443,12 @@ class NonNativeFullscreen: FullscreenBase, FullscreenStyle { } class NonNativeFullscreenVisibleMenu: NonNativeFullscreen { + override var fullscreenMode: FullscreenMode { .nonNativeVisibleMenu } override var properties: Properties { Properties(hideMenu: false) } } class NonNativeFullscreenPaddedNotch: NonNativeFullscreen { + override var fullscreenMode: FullscreenMode { .nonNativePaddedNotch } override var properties: Properties { Properties(paddedNotch: true) } }