FlixyMac ist weg

VLCKit liefert Teile für iOS, macOS, tvOS und die Simulatoren — aber
keinen für Catalyst. Deshalb hing `FlixyVLC` gar nicht erst am Mac-Ziel,
und deshalb musste dort jedes MKV und jeder DTS-Ton vom Server
umgerechnet werden. Bei einem Medienclient ist das nicht ein Detail am
Rand, sondern der Zweck der Übung.

„Für iPad angepasst" ist derselbe iOS-Bau und lädt denselben iOS-Teil von
VLCKit. Damit läuft auf dem Mac, was auf dem iPad läuft.

Was Catalyst dafür konnte — eine `.app` zum Weitergeben, Intel-Macs, die
Fensterleiste über AppKit — wiegt hier nichts auf: ein Nutzer, ein
Apple-Silicon-Mac.

Die Fenstergröße hing an `#if targetEnvironment(macCatalyst)` und fragt
jetzt `FlixyPlatform.isMac`. `sizeRestrictions` ist auf dem iPhone `nil`,
das Fragezeichen ist die ganze Fallunterscheidung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-15 21:00:44 +02:00
co-authored by Claude Opus 5
parent f3ea1ea891
commit 5dd2daf3ed
4 changed files with 21 additions and 198 deletions
+17 -13
View File
@@ -71,17 +71,18 @@ struct FlixyApp: App {
// aufgeht: schmaler als das hier klappt die Seitenleiste zu
// und die Reihen zeigen anderthalb Kacheln.
//
// `os(macOS)` allein reichte nicht — unter Catalyst gilt
// `os(iOS)`, und genau deshalb öffnete das Fenster wieder in
// Notizzettelgröße.
#if os(macOS) || targetEnvironment(macCatalyst)
.frame(minWidth: 900, minHeight: 620)
#endif
#if targetEnvironment(macCatalyst)
// Unter Catalyst gibt es `defaultSize` nicht; die Größe hängt
// an der Szene.
// Zur Laufzeit gefragt, nicht beim Übersetzen: auf dem Mac
// läuft genau dieser iOS-Bau, und `os(macOS)` ist dabei
// falsch. Ohne Untergrenze öffnet das Fenster in
// Notizzettelgröße, und darin fällt der Aufmacher in sich
// zusammen, weil seine Abstände dehnbar sind.
.frame(
minWidth: FlixyPlatform.isMac ? 900 : nil,
minHeight: FlixyPlatform.isMac ? 620 : nil
)
// `defaultSize` gibt es hier nicht; die Größe hängt an der
// Szene.
.task { Self.widenWindow() }
#endif
.environment(session)
.environment(playback)
.environment(playbackSettings)
@@ -132,13 +133,17 @@ struct FlixyApp: App {
}
#if os(iOS)
#if targetEnvironment(macCatalyst)
extension FlixyApp {
/// Gibt dem Fenster eine vernünftige Mindestgröße.
///
/// Unter Catalyst öffnet macOS sonst ein Fenster von der Größe eines
/// Auf dem Mac öffnet das System sonst ein Fenster von der Größe eines
/// Notizzettels — und darin fällt der Aufmacher in sich zusammen, weil
/// seine Abstände dehnbar sind.
///
/// `sizeRestrictions` gibt es nur dort, wo Fenster sich überhaupt frei
/// ziehen lassen; auf dem iPhone ist die Eigenschaft `nil`. Das
/// Fragezeichen ist deshalb die ganze Fallunterscheidung — ein Aufruf
/// auf einem Gerät ohne Fenster tut schlicht nichts.
@MainActor
static func widenWindow() {
for scene in UIApplication.shared.connectedScenes {
@@ -151,7 +156,6 @@ extension FlixyApp {
}
}
}
#endif
/// Der klassische App-Delegat, für das eine, was SwiftUI nicht abdeckt.
@MainActor