From bc7b00dfb3a20bdd909fcba90c53dcf0b60c6521 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Sat, 18 Jul 2026 16:21:12 +0200 Subject: [PATCH] Restore last player window frame when auto-resize is off With auto-resize disabled the separate player window opened at a computed 16:9 default and was never corrected, so non-16:9 videos sat letterboxed until a manual resize. Persist the window frame via NSWindow frame autosave and restore it on open when auto-resize is off, so the window reopens exactly as the user last left it. --- .../Views/Player/ExpandedPlayerWindowManager.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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