From 4c084bd0cd4d388ceebeae9b04650fee1a4c3da9 Mon Sep 17 00:00:00 2001 From: LemonNexus Date: Mon, 9 Feb 2026 22:45:14 +0000 Subject: [PATCH] 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 --- ui/hud_overlay_clean.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/ui/hud_overlay_clean.py b/ui/hud_overlay_clean.py index 73ec8bf..dcb47a2 100644 --- a/ui/hud_overlay_clean.py +++ b/ui/hud_overlay_clean.py @@ -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