mirror of
https://github.com/yattee/yattee.git
synced 2026-11-04 10:57:18 +00:00
Add corner player layout on iPad and macOS
Preset-selected two-region layout: video in the top-left, a resizable side column, and an optional region below the video. Pages are assigned to regions per preset (Location picker in the page editor); the layout falls back to the stacked widescreen layout below 900pt width, so Split View and narrow windows degrade automatically. - CornerPlayerLayout hosts the shared playerAreaForWidescreen builder, so the MPV hosting path is identical to the stacked layout - Layout resolver in ExpandedPlayerSheet picks corner per layout pass; NavigationCoordinator.isCornerLayoutActive feeds the macOS window manager, which drops the aspect-ratio lock and auto-fit while corner is active (and restores them on exit, incl. fullscreen replay and window re-mounts) - Side column width persisted via new cornerPanelColumnWidth setting (280-560pt, video column kept >= 480pt) - Settings: layout mode picker (iPad/macOS) with automatic-fallback footer, per-page region picker when corner is on, region shown in the pages list
This commit is contained in:
@@ -160,4 +160,18 @@ struct PanelSettingsTests {
|
||||
settings.setEnabled(true, for: .comments)
|
||||
#expect(settings.pages.map(\.pageType) == PanelSettings.default.pages.map(\.pageType))
|
||||
}
|
||||
|
||||
@Test("Region assignment and layout mode round-trip through Codable")
|
||||
func regionAndLayoutModeRoundTrip() throws {
|
||||
var settings = PanelSettings.default
|
||||
settings.layoutMode = .corner
|
||||
settings.setRegion(.belowVideo, for: .related)
|
||||
#expect(settings.configuration(for: .related)?.region == .belowVideo)
|
||||
#expect(settings.enabledPages(in: .primary).map(\.pageType) == [.chapters, .queue])
|
||||
|
||||
let data = try JSONEncoder().encode(settings)
|
||||
let decoded = try JSONDecoder().decode(PanelSettings.self, from: data)
|
||||
#expect(decoded.effectiveLayoutMode == .corner)
|
||||
#expect(decoded.configuration(for: .related)?.region == .belowVideo)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user