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:
19
gui/app.py
19
gui/app.py
@@ -91,7 +91,7 @@ class App(ctk.CTk):
|
|||||||
|
|
||||||
# Restore saved window geometry or use default
|
# Restore saved window geometry or use default
|
||||||
saved_geo = self.store._window_geometry
|
saved_geo = self.store._window_geometry
|
||||||
if saved_geo:
|
if saved_geo and self._is_valid_geometry(saved_geo):
|
||||||
self.geometry(saved_geo)
|
self.geometry(saved_geo)
|
||||||
else:
|
else:
|
||||||
self.geometry("1100x700")
|
self.geometry("1100x700")
|
||||||
@@ -667,10 +667,25 @@ class App(ctk.CTk):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
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):
|
def _on_close(self):
|
||||||
# Save window geometry (size + position) and sidebar width
|
# Save window geometry (size + position) and sidebar width
|
||||||
try:
|
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
|
# Save sidebar width from PanedWindow sash position
|
||||||
try:
|
try:
|
||||||
sash_pos = self._paned.sash_coord(0)
|
sash_pos = self._paned.sash_coord(0)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
"""Version info for ServerManager."""
|
"""Version info for ServerManager."""
|
||||||
|
|
||||||
__version__ = "1.9.18"
|
__version__ = "1.9.19"
|
||||||
__app_name__ = "ServerManager"
|
__app_name__ = "ServerManager"
|
||||||
__author__ = "aibot777"
|
__author__ = "aibot777"
|
||||||
__description__ = "Desktop GUI for managing remote servers"
|
__description__ = "Desktop GUI for managing remote servers"
|
||||||
|
|||||||
Reference in New Issue
Block a user