macos: Require fullScreenMode on fullscreenStyle
parent
2debeb0f13
commit
eff3619878
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) }
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue