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

2.9 KiB

1. Ursache und Nachweis vorbereiten

  • 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

  • 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ü.
  • 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.
  • 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

  • 3.1 docs/ide-referenz.md Abschnitt 2 um den Ort des Control-Menüs ergänzen; Hilfekatalog-/Linktests bleiben bestanden.
  • 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.
  • 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.