Files
Chili Palmer 5a1a284505 Phase 6-07a: Fensterlokale Control-Menüs und Windows-Testkorrekturen
Control-Menüs öffnen für alle Fensterarten am [≡]-Symbol des aktiven
Fensters: eigener Auswahlzustand statt Kopplung an die Menüleiste,
bevorzugt unter der Titelzeile, bei Platzmangel nach oben aufgeklappt,
am rechten Rand nur so weit nach links wie nötig. Regressionstest über
TestBackend für Code-, Projekt-, Output-, Immediate-, Debug- und
Hilfefenster, maximiert, minimiert, Rand und Maus.

Nebenbefunde der Windows-Testausführung: Temporärdatei vor sync_all
schreibend öffnen (Zugriff verweigert), relative Projektverweise immer
mit / schreiben, zeilenendenneutrale Vergleiche in Referenzmatrix-,
Kompatibilitäts- und MAK-Beispieltests, DriveListBox-Zeichenbild
plattformneutral. Korpus-Sollausgaben per .gitattributes auf LF.

Specs ide-oberflaeche und ide-projekte synchronisiert, Change archiviert.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-08 11:02:40 +02:00

16 lines
2.9 KiB
Markdown

## 1. Ursache und Nachweis vorbereiten
- [x] 1.1 Befund mit frischem Start reproduzieren (Run-Fenster aktiv, Alt+Minus sowie Klick auf `[≡]`) und die fehlerhafte Position und die „File“-Hervorhebung als fehlschlagende TestBackend-Prüfung in `crates/tb-ide/tests/app.rs` festhalten; die Prüfung muss die Popup-Position relativ zu `app.rect(aktives Fenster)` und den Stil der Menüleistenzelle „File“ auswerten.
## 2. Zustand trennen und Position korrigieren
- [x] 2.1 In `crates/tb-ide/src/app.rs` den Control-Menü-Zustand von `menu` lösen: `Command::ControlMenu` darf `menu` nicht setzen; Auswahl, Auf/Ab, Enter, Mnemonic und Esc für das Control-Menü über die gemeinsame Eintragsnavigation bedienen; Klick außerhalb und Esc schließen beide Zustände; Alt+Mnemonic wechselt in die Menüleiste und schließt das Control-Menü.
- [x] 2.2 In `crates/tb-ide/src/render.rs` eine für alle Fensterarten gemeinsame Platzierungsfunktion für das Control-Menü-Popup einführen: linke Spalte = Symbolspalte `rect.x`, bevorzugt unter der Titelzeile (`rect.y + 1`), bei fehlendem Platz unten nach oben aufklappen mit Unterkante `rect.y - 1`, bei fehlendem Platz rechts nur so weit nach links rücken, dass das Popup passt und die Symbolspalte überdeckt bleibt; das Popup liegt immer vollständig in der Arbeitsfläche und überdeckt nie die eigene Titelzeile; Menüleiste hebt bei offenem Control-Menü keinen Titel hervor; Hit-Bereiche der Einträge an die berechnete Position anpassen.
- [x] 2.3 Prüfung aus 1.1 grün bekommen und um Fälle ergänzen: Code-, Projekt-, Output- und Immediate-Fenster mit derselben Regel, minimiertes Fenster (Ctrl+F9) klappt nach oben, per Ctrl+F7 an den rechten Rand verschobenes Fenster rückt nach links, maximiertes Fenster (Ctrl+F10), Mausklick auf `[≡]` und auf einen Eintrag; bestehende Tests zu Fenster- und Menübedienung bleiben bestanden.
## 3. Dokumentation und Übergabe
- [x] 3.1 `docs/ide-referenz.md` Abschnitt 2 um den Ort des Control-Menüs ergänzen; Hilfekatalog-/Linktests bleiben bestanden.
- [x] 3.2 Manuelle Gegenprobe im realen Terminal (Windows Terminal) mit Run-, Code-, Projekt-, Immediate- und Hilfefenster in normalem, minimiertem und maximiertem Zustand sowie am rechten Rand; Vorher-/Nachher-Beobachtung in `evidence/` festhalten und Befund an Change 07 Aufgabe 2.3 als behoben übergeben.
- [x] 3.3 Nebenbefunde der Windows-Testausführung beheben (siehe `evidence/befund-2026-09-08.md`): `prepare_publication` in `crates/tb-export/src/lib.rs` öffnete die Temporärdatei lesend vor `sync_all` („Zugriff verweigert“, sechs Export-Tests); `relative_path` in `crates/tb-vm/src/project_io.rs` schrieb Projektverweise mit Plattformtrenner statt `/` (drei `save_as`-Tests); Referenzmatrix-, Kompatibilitäts- und MAK-Beispieltests verglichen CRLF-Checkouts nicht zeilenendenneutral. Vollständiger Workspace-Lauf unter Windows muss bestehen.