From 8e105aa0afcb9bcbb46ce6709821d72d39fe30fd Mon Sep 17 00:00:00 2001 From: Joe Gitta Date: Fri, 22 May 2026 20:34:29 +0000 Subject: [PATCH] v0.11: fix infobar flag, hamburger click-outside via polling timer --- browser.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/browser.py b/browser.py index 54e5e19..e2db327 100755 --- a/browser.py +++ b/browser.py @@ -403,6 +403,11 @@ class BookmarkPanel(QWidget): """) QApplication.instance().installEventFilter(self) + # Timer: hide panel when user clicks anywhere outside it + # (clicks on Chromium never reach Qt's eventFilter) + self._click_guard = QTimer() + self._click_guard.timeout.connect(self._check_outside_click) + def rebuild(self, items): # Remove old layout old = self.layout() @@ -479,6 +484,23 @@ class BookmarkPanel(QWidget): self.hide() self.overlay.open_manager() + def setVisible(self, visible): + super().setVisible(visible) + if visible: + self._click_guard.start(100) + else: + self._click_guard.stop() + + def _check_outside_click(self): + """Hide panel when a click lands outside it — even on the Chromium window.""" + from PyQt5.QtGui import QCursor + if not self.isVisible(): + self._click_guard.stop() + return + if QApplication.mouseButtons() & Qt.LeftButton: + if not self.geometry().contains(QCursor.pos()): + self.hide() + def eventFilter(self, obj, event): from PyQt5.QtCore import QEvent if event.type() == QEvent.MouseButtonPress and self.isVisible(): @@ -692,10 +714,8 @@ def launch_chrome(): "chromium", "--no-first-run", "--no-default-browser-check", - "--disable-translate", "--disable-restore-session-state", "--disable-default-browser-check", - "--no-first-run", "--disable-features=TranslateUI,OptimizationHints,OptimizationHintsFetching,OptimizationTargetPrediction,OptimizationGuideModelDownloading", "--disable-component-update", "--disable-background-networking",