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 <gpg@ankiweb.net>
This commit is contained in:
llama 2025-05-30 14:35:06 +08:00 committed by GitHub
parent 14b8a8ad0d
commit f9f0894162
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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: