diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e8814bf93..068760e6b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -230,7 +230,7 @@ KolbyML Adnane Taghi Spiritual Father Emmanuel Ferdman - +Marvin Kopf ******************** The text of the 3 clause BSD license follows: diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py index 11488dd03..a53b21b2d 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 = 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: diff --git a/qt/aqt/mediasrv.py b/qt/aqt/mediasrv.py index 67869f9a9..3fd1996af 100644 --- a/qt/aqt/mediasrv.py +++ b/qt/aqt/mediasrv.py @@ -7,9 +7,8 @@ import enum import logging import mimetypes import os -import random import re -import string +import secrets import sys import threading import traceback @@ -843,7 +842,7 @@ def legacy_page_data() -> Response: return _text_response(HTTPStatus.NOT_FOUND, "page not found") -_APIKEY = "".join(random.choices(string.ascii_letters + string.digits, k=32)) +_APIKEY = secrets.token_urlsafe(32) def _have_api_access() -> bool: diff --git a/qt/aqt/mpv.py b/qt/aqt/mpv.py index 60ea21290..329a95538 100644 --- a/qt/aqt/mpv.py +++ b/qt/aqt/mpv.py @@ -41,6 +41,7 @@ import time from queue import Empty, Full, Queue from shutil import which +import aqt from anki.utils import is_mac, is_win @@ -444,7 +445,7 @@ class MPV(MPVBase): super().__init__(*args, **kwargs) - self._register_callbacks() + aqt.mw.taskman.run_in_background(self._register_callbacks, None) def _register_callbacks(self): self._callbacks = {} diff --git a/ts/lib/components/EnumSelector.svelte b/ts/lib/components/EnumSelector.svelte index 328946bd2..8a711e9c0 100644 --- a/ts/lib/components/EnumSelector.svelte +++ b/ts/lib/components/EnumSelector.svelte @@ -20,16 +20,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html export let disabledChoices: T[] = []; $: label = choices.find((c) => c.value === value)?.label; - - -