Der Mac ist nicht immer Catalyst
Die Bedienung mit Zeiger und Tastatur hing an `#if targetEnvironment(macCatalyst)`. Das ist in dem Bau, der tatsächlich benutzt wird, **falsch**: „für iPad angepasst" ist buchstäblich der iOS-Bau, der auf Apple Silicon startet, und dort ist die Abfrage nicht erfüllt. Klick-zum-Anhalten, Leertaste und die Pfeiltasten waren damit genau dort abgeschaltet, wo sie gebraucht werden. Jetzt beantwortet `FlixyPlatform.isMac` die Frage zur Laufzeit und kennt beide Wege. Die Ansicht bleibt dabei eine einzige: `focusable(_:)` nimmt den Schalter entgegen, die Tastenhandler geben sonst `.ignored` zurück. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
9a4b6b1e06
commit
37a6c2648f
@@ -12,6 +12,30 @@ import AppKit
|
||||
/// Systeme verschiedene Namen dafür haben, steht der Unterschied hier und
|
||||
/// nirgends sonst. Sonst wandert er in zwanzig Dateien und wird beim
|
||||
/// nächsten Bildschirm vergessen.
|
||||
/// Auf was für einem Gerät läuft das hier gerade?
|
||||
public enum FlixyPlatform {
|
||||
/// Läuft die App auf einem Mac?
|
||||
///
|
||||
/// **Zwei Wege führen dorthin, und für den Übersetzer sehen sie
|
||||
/// verschieden aus.** Catalyst ist ein eigener Bau und meldet sich als
|
||||
/// `targetEnvironment(macCatalyst)`. „Für iPad angepasst" ist dagegen
|
||||
/// buchstäblich der iOS-Bau, der auf Apple Silicon startet — dort ist
|
||||
/// dieselbe Abfrage schlicht falsch.
|
||||
///
|
||||
/// Wer nur die erste Hälfte prüft, schreibt Code für den Mac, der auf dem
|
||||
/// Mac nicht läuft: übersetzt sauber, ist aber genau dort abgeschaltet,
|
||||
/// wo er gebraucht wird. Deshalb hier beide Wege, an einer Stelle.
|
||||
public static let isMac: Bool = {
|
||||
#if targetEnvironment(macCatalyst)
|
||||
true
|
||||
#elseif os(iOS)
|
||||
ProcessInfo.processInfo.isiOSAppOnMac
|
||||
#else
|
||||
true
|
||||
#endif
|
||||
}()
|
||||
}
|
||||
|
||||
extension View {
|
||||
/// Eine schmale Titelzeile — auf dem Mac gibt es sie nicht.
|
||||
public func flixyInlineTitle() -> some View {
|
||||
|
||||
Reference in New Issue
Block a user