v1.9.19: fix offscreen window — validate saved geometry, reject -32000 coords

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-03-05 04:13:11 -05:00
parent d33f573483
commit 35bdefba59
4 changed files with 18 additions and 3 deletions

View File

@@ -91,7 +91,7 @@ class App(ctk.CTk):
# Restore saved window geometry or use default
saved_geo = self.store._window_geometry
if saved_geo:
if saved_geo and self._is_valid_geometry(saved_geo):
self.geometry(saved_geo)
else:
self.geometry("1100x700")
@@ -667,10 +667,25 @@ class App(ctk.CTk):
except Exception:
pass
@staticmethod
def _is_valid_geometry(geo: str) -> bool:
"""Reject geometry with offscreen coordinates (e.g. minimized -32000)."""
try:
# format: WxH+X+Y or WxH-X-Y
import re
m = re.match(r"(\d+)x(\d+)([+-]\d+)([+-]\d+)", geo)
if not m:
return False
x, y = int(m.group(3)), int(m.group(4))
return -100 < x < 10000 and -100 < y < 10000
except Exception:
return False
def _on_close(self):
# Save window geometry (size + position) and sidebar width
try:
self.store._window_geometry = self.geometry()
geo = self.geometry()
self.store._window_geometry = geo if self._is_valid_geometry(geo) else None
# Save sidebar width from PanedWindow sash position
try:
sash_pos = self._paned.sash_coord(0)