Panel je Bildschirm messen, nicht am schmalsten

Die Breite kam vom **schmalsten** aktiven Bildschirm — mit der Begründung,
dasselbe Panel erscheine überall. Ein Fernseher widerlegt das: bei 720 Punkten
Breite bleiben drei Spalten, vier Widgets brechen auf zwei Reihen um, und das
Panel wird hoch statt breit. Auf dem Notebook, wo achtmal Platz gewesen wäre.

Jetzt rechnet jeder Bildschirm für sich. Der Koordinator kennt seine
Bildschirme ohnehin und reicht die Kennung schon durch — sie wurde nur nicht
benutzt.

Die zweite Hälfte war, dass es nach dem Abstecken so blieb: die Größe wurde
einmal gerechnet und nie wieder. `NSScreen` meldet sich nicht bei SwiftUI,
also gibt es jetzt einen mitgezählten Bildschirmwechsel, den die Ansicht
mitliest, und beim Wechsel werden die Fenstergrößen neu gesetzt — verzögert um
einen Durchlauf, damit der Koordinator seine Fenster vorher neu aufgebaut hat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-08-18 19:59:46 +02:00
parent 286d886e9e
commit 49a3ff0548
3 changed files with 58 additions and 17 deletions

View File

@@ -4,7 +4,7 @@ public extension NSScreen {
/// Die `CGDirectDisplayID` dieses Bildschirms. Anders als der Index in
/// `NSScreen.screens` überlebt sie ein Umstecken oder Umsortieren.
var displayID: CGDirectDisplayID {
public var displayID: CGDirectDisplayID {
deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? CGDirectDisplayID ?? 0
}