Alt+F4 bei gerade geöffnetem Dialog schließt nicht mehr das Programm
Auf dem langsameren Build-Runner schlug der Alt+F4-Test fehl: Kam der Tastendruck an, bevor der Dialog gezeichnet und gesperrt war, übersah die Ausweichsuche das Popup (winfo_ismapped = 0) und Alt+F4 galt dem Hauptfenster. Die Suche nutzt jetzt den Fensterstatus. Neuer Test erzwingt genau diesen Zustand plattformunabhängig. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
26ac90bb0f
commit
bd45ffea17
3 files changed
+30
-3
No files matched your search
@@ -298,6 +298,26 @@ def test_schliessen_waehrend_rundgang(lauf_mit_daten):
|
||||
lauf.pruefen()
|
||||
|
||||
|
||||
def test_alt_f4_bevor_die_sperre_steht(lauf_mit_daten, monkeypatch):
|
||||
"""Erzwingt den Zustand vom langsamen Build-Rechner: Dialog ist offen, aber Tk-Sperre und
|
||||
Zeichnen sind noch nicht fertig. Alt+F4 muss trotzdem nur den Dialog schließen."""
|
||||
from provtool.gui import win95 as w
|
||||
from provtool.gui.dialogs import InfoDialog
|
||||
monkeypatch.setattr(w.Dialog, "_sperre_setzen", lambda self, versuch=0: None) # keine Sperre
|
||||
monkeypatch.setattr(w.Dialog, "winfo_ismapped", lambda self: 0) # „noch nicht gezeichnet“
|
||||
lauf = lauf_mit_daten
|
||||
lauf.ablauf([
|
||||
(IMMER, lambda: InfoDialog(lauf.root).zeigen(), "Info öffnen"),
|
||||
# wie unter Windows: Tk liefert den Tastendruck an das Fenster mit Fokus – hier noch das Hauptfenster
|
||||
(lambda: lauf.dialog(InfoDialog) is not None, lambda: lauf.app.rahmen.alt_f4(lauf.root),
|
||||
"Alt+F4 (Fokus noch beim Hauptfenster)"),
|
||||
(lambda: lauf.dialog(InfoDialog) is None, lambda: None, "Dialog geschlossen"),
|
||||
], sekunden=8)
|
||||
assert lauf.lebt, "Alt+F4 darf bei offenem Dialog nicht das ganze Programm beenden"
|
||||
assert not lauf.uebrig, lauf.uebrig
|
||||
lauf.pruefen()
|
||||
|
||||
|
||||
def test_alt_f4_im_rundgang_beendet_nur_den_rundgang(lauf_mit_daten):
|
||||
lauf = lauf_mit_daten
|
||||
rg = lambda: getattr(lauf.app, "_rundgang", None) # noqa: E731
|
||||
|
||||
Reference in new issue
Block a user