Improve settings window and theme switching
Prevent multiple settings windows and add safe theme switching.
- Track the settings window instance (_settings_window) and avoid creating duplicates by lifting/focusing an existing window.
- Add a close_settings_window handler that releases grabs and clears the tracked instance when the settings window closes.
- Defer and coalesce theme changes using _pending_theme_after to avoid applying a global CTk theme while native option menus are still closing (prevents stale Windows/Tk menu state).
- Introduce _apply_theme which releases any grabs, optionally destroys and later reopens the settings window, updates config and appearance, rebuilds UI content, and refreshes the list.
- Add helper methods _release_any_grab and _destroy_settings_for_theme_change to safely release grabs and tear down the settings window for theme changes.
- Update option menu callbacks and settings refresh code to use the new close handler instead of directly destroying the window.
- Add two new fields to App: _settings_window and _pending_theme_after.
These changes make the settings UI more robust and avoid UI/menu state issues when toggling appearance modes.
- fix #49
Full Changelog: v1.0.10...v1.0.20