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
@@ -288,8 +288,15 @@ class Hauptrahmen:
|
||||
|
||||
def suche(widget):
|
||||
for kind in widget.winfo_children():
|
||||
if isinstance(kind, tk.Toplevel) and hasattr(kind, "abbrechen") and kind.winfo_ismapped():
|
||||
gefunden.append(kind)
|
||||
# Fensterstatus statt winfo_ismapped(): direkt nach dem Einblenden ist der Status schon
|
||||
# „normal“, gezeichnet ist das Fenster aber evtl. noch nicht (langsamer PC, Wine).
|
||||
if isinstance(kind, tk.Toplevel) and hasattr(kind, "abbrechen"):
|
||||
try:
|
||||
offen = kind.winfo_exists() and kind.wm_state() != "withdrawn"
|
||||
except tk.TclError:
|
||||
offen = False
|
||||
if offen:
|
||||
gefunden.append(kind)
|
||||
suche(kind)
|
||||
suche(self.root)
|
||||
return gefunden[-1] if gefunden else None
|
||||
|
||||
Reference in new issue
Block a user