fix: HUD rebuild stability and end_session compatibility

- Add end_session() as alias for stop_session() for backward compatibility
- Use delayed rebuild with QTimer.singleShot to avoid UI glitches
- Add container.show() at end of _setup_ui to ensure visibility
- Add error handling in _do_rebuild for recovery
This commit is contained in:
LemonNexus 2026-02-09 22:45:14 +00:00
parent f9b4d9a44b
commit 4c084bd0cd
1 changed files with 25 additions and 4 deletions

View File

@ -466,6 +466,9 @@ class HUDOverlay(QWidget):
footer.addWidget(self.drag_hint)
layout.addLayout(footer)
# Ensure container is visible
self.container.show()
def _get_stylesheet(self) -> str:
"""Get stylesheet based on compact mode."""
@ -517,14 +520,28 @@ class HUDOverlay(QWidget):
def _rebuild_ui(self):
"""Rebuild UI with current config."""
# Delete old container and recreate
# Hide first to avoid visual glitch
self.hide()
# Delete old container
if hasattr(self, 'container') and self.container:
self.container.deleteLater()
self.container = None
# Rebuild everything
self._setup_ui()
self._refresh_display()
# Small delay to ensure cleanup
from PyQt6.QtCore import QTimer
QTimer.singleShot(10, self._do_rebuild)
def _do_rebuild(self):
"""Actually rebuild the UI."""
try:
self._setup_ui()
self._refresh_display()
self.show()
except Exception as e:
logger.error(f"Error rebuilding HUD: {e}")
# Try to recover
self.show()
# === Session Management ===
@ -552,6 +569,10 @@ class HUDOverlay(QWidget):
self.status_label.setText("● Live")
self.status_label.setStyleSheet("color: #7FFF7F; font-weight: bold;")
def end_session(self) -> None:
"""Alias for stop_session for backward compatibility."""
self.stop_session()
def stop_session(self) -> None:
"""Stop the current session."""
self.session_active = False