diff --git a/gui/app.py b/gui/app.py index 33e44fb..6edfff8 100644 --- a/gui/app.py +++ b/gui/app.py @@ -2,6 +2,7 @@ Main application window — sidebar + tabview layout. """ +import sys import tkinter import customtkinter as ctk from tkinter import messagebox @@ -118,6 +119,32 @@ class App(ctk.CTk): # Cleanup on close self.protocol("WM_DELETE_WINDOW", self._on_close) + # Win32: restore window when stuck minimized after Win+D + self._restore_check_id = None + if sys.platform == "win32": + self.after(3000, self._start_restore_watchdog) + + def _start_restore_watchdog(self): + """Start periodic check for stuck minimized state (Windows only).""" + try: + import ctypes + self._user32 = ctypes.windll.user32 + self._hwnd = int(self.wm_frame(), 16) + self._check_restore() + except Exception: + pass + + def _check_restore(self): + """If window is iconic but user clicked taskbar, force restore.""" + try: + if self._user32.IsIconic(self._hwnd): + fg = self._user32.GetForegroundWindow() + if fg == self._hwnd: + self._user32.ShowWindow(self._hwnd, 9) # SW_RESTORE + except Exception: + pass + self._restore_check_id = self.after(500, self._check_restore) + def _build_layout(self): # PanedWindow — resizable sidebar | main area self._paned = tkinter.PanedWindow( @@ -682,6 +709,12 @@ class App(ctk.CTk): return False def _on_close(self): + # Cancel restore watchdog + try: + if self._restore_check_id: + self.after_cancel(self._restore_check_id) + except Exception: + pass # Save window geometry (size + position) and sidebar width try: geo = self.geometry() diff --git a/releases/ServerManager-v1.9.15-win-x64.exe b/releases/ServerManager-v1.9.20-win-x64.exe similarity index 98% rename from releases/ServerManager-v1.9.15-win-x64.exe rename to releases/ServerManager-v1.9.20-win-x64.exe index 8e94d19..0e66e63 100644 Binary files a/releases/ServerManager-v1.9.15-win-x64.exe and b/releases/ServerManager-v1.9.20-win-x64.exe differ diff --git a/version.py b/version.py index 2f8c211..b84ebcf 100755 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ """Version info for ServerManager.""" -__version__ = "1.9.19" +__version__ = "1.9.20" __app_name__ = "ServerManager" __author__ = "aibot777" __description__ = "Desktop GUI for managing remote servers"