diff --git a/Yattee/Views/Player/ExpandedPlayerWindowManager.swift b/Yattee/Views/Player/ExpandedPlayerWindowManager.swift index 6fcc0e11..d92e36cb 100644 --- a/Yattee/Views/Player/ExpandedPlayerWindowManager.swift +++ b/Yattee/Views/Player/ExpandedPlayerWindowManager.swift @@ -56,6 +56,7 @@ final class ExpandedPlayerWindowManager: NSObject { private static let maxScreenRatio: CGFloat = 0.7 private static let targetVideoHeight: CGFloat = 720 private static let defaultAspectRatio: Double = 16.0 / 9.0 + private static let frameAutosaveName = "ExpandedPlayerWindow" var isPresented: Bool { playerWindow != nil @@ -185,6 +186,17 @@ final class ExpandedPlayerWindowManager: NSObject { // Center window on screen window.center() + // With auto-resize off, the window must reopen exactly as the user last + // left it — no fitting, no centering. Restore the persisted frame over + // the computed default (no-op when nothing was saved yet, e.g. first + // open). With auto-resize on, sizing is owned by resizeToFitAspectRatio. + if !appEnvironment.settingsManager.playerSheetAutoResize { + window.setFrameUsingName(Self.frameAutosaveName) + } + // Persist every later frame change (manual resize/move, auto-fit) so the + // next open — with auto-resize off — can restore it. + _ = window.setFrameAutosaveName(Self.frameAutosaveName) + // Store reference self.playerWindow = window