From f9f089416225d1af2a10378552461505b0188058 Mon Sep 17 00:00:00 2001 From: llama Date: Fri, 30 May 2025 14:35:06 +0800 Subject: [PATCH] Add left margin to browser when sidebar is closed (#4040) * add left margin to browser when sidebar is closed * listen for event instead of explicit user action * refresh sidebar on visibility change * Add a margin on macOS even when not collapsed --------- Co-authored-by: Damien Elmes --- qt/aqt/browser/browser.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py index 260746514..49f289f93 100644 --- a/qt/aqt/browser/browser.py +++ b/qt/aqt/browser/browser.py @@ -53,6 +53,7 @@ from aqt.operations.tag import ( from aqt.qt import * from aqt.sound import av_player from aqt.switch import Switch +from aqt.theme import WidgetStyle from aqt.undo import UndoActionsInfo from aqt.utils import ( HelpPage, @@ -170,6 +171,7 @@ class Browser(QMainWindow): if self.height() != 0: self.aspect_ratio = self.width() / self.height() self.set_layout(self.mw.pm.browser_layout(), True) + self.onSidebarVisibilityChange(not self.sidebarDockWidget.isHidden()) # disable undo/redo self.on_undo_state_change(mw.undo_actions_info()) # legacy alias @@ -726,6 +728,7 @@ class Browser(QMainWindow): self.form.actionSidebarFilter.triggered, self.focusSidebarSearchBar, ) + qconnect(dw.visibilityChanged, self.onSidebarVisibilityChange) grid = QGridLayout() grid.addWidget(self.sidebar.searchBar, 0, 0) grid.addWidget(self.sidebar.toolbar, 0, 1) @@ -745,9 +748,17 @@ class Browser(QMainWindow): self.mw.progress.timer(10, self.sidebar.refresh, False, parent=self.sidebar) def showSidebar(self, show: bool = True) -> None: - want_visible = not self.sidebarDockWidget.isVisible() self.sidebarDockWidget.setVisible(show) - if want_visible and show: + + def onSidebarVisibilityChange(self, visible): + margins = self.form.verticalLayout_3.contentsMargins() + skip_left_margin = not visible and not ( + is_mac and aqt.mw.pm.get_widget_style() == WidgetStyle.NATIVE + ) + margins.setLeft(0 if skip_left_margin else margins.right()) + self.form.verticalLayout_3.setContentsMargins(margins) + + if visible: self.sidebar.refresh() def focusSidebar(self) -> None: