fix: restore positive resize increments when clearing aspect lock

This commit is contained in:
2026-10-18 02:11:16 +02:00
parent 3e782aff31
commit dd02383c0b
5 changed files with 23 additions and 7 deletions
+10 -5
View File
@@ -36,7 +36,8 @@ final class PlayerModel: ObservableObject {
didSet {
guard showsQueue != oldValue, let window, !isFullScreen,
!isCompact, !compactWindow.isTransitioning else { return }
window.aspectRatio = .zero
// Setting aspectRatio to zero leaves AppKit's resize increments at zero.
window.resizeIncrements = NSSize(width: 1, height: 1)
var frame = window.frame
frame.size.width += showsQueue ? 260 : -260
if let screen = window.screen?.visibleFrame {
@@ -706,7 +707,7 @@ final class PlayerModel: ObservableObject {
youtubeHeight = nil
youtubeQuality = nil
needsVideoFit = false
window?.aspectRatio = .zero
window?.resizeIncrements = NSSize(width: 1, height: 1)
commandError = nil
isSeeking = false
window?.representedURL = nil
@@ -979,7 +980,7 @@ final class PlayerModel: ObservableObject {
}
needsVideoFit = false
guard state.has_video, aspect.isFinite, aspect > 0 else {
window.aspectRatio = .zero
window.resizeIncrements = NSSize(width: 1, height: 1)
return
}
let screen = (window.screen ?? NSScreen.main)?.visibleFrame ?? window.frame
@@ -988,10 +989,14 @@ final class PlayerModel: ObservableObject {
let size = NSSize(width: width + sidebarWidth, height: width / aspect)
// ponytail: extreme ratios retain letterboxing; compact controls if exact fitting is needed.
guard size.width >= window.minSize.width, size.height >= window.minSize.height else {
window.aspectRatio = .zero
window.resizeIncrements = NSSize(width: 1, height: 1)
return
}
window.aspectRatio = showsQueue ? .zero : NSSize(width: aspect, height: 1)
if showsQueue {
window.resizeIncrements = NSSize(width: 1, height: 1)
} else {
window.aspectRatio = NSSize(width: aspect, height: 1)
}
let frame = NSRect(
x: min(max(window.frame.midX - size.width / 2, screen.minX), screen.maxX - size.width),
y: min(max(window.frame.midY - size.height / 2, screen.minY), screen.maxY - size.height),