diff --git a/qt/aqt/browser/browser.py b/qt/aqt/browser/browser.py index 9eda5ed52..358ffe8c9 100644 --- a/qt/aqt/browser/browser.py +++ b/qt/aqt/browser/browser.py @@ -3,6 +3,7 @@ from __future__ import annotations +import json from typing import Callable, Sequence import aqt @@ -35,6 +36,7 @@ from aqt.operations.tag import ( remove_tags_from_notes, ) from aqt.qt import * +from aqt.sound import av_player from aqt.switch import Switch from aqt.undo import UndoActionsInfo from aqt.utils import ( @@ -611,10 +613,10 @@ class Browser(QMainWindow): def onTogglePreview(self) -> None: if self._previewer: self._previewer.close() - self._on_preview_closed() elif self.editor.note: self._previewer = PreviewDialog(self, self.mw, self._on_preview_closed) self._previewer.open() + self.toggle_preview_button_state(True) def _renderPreview(self) -> None: if self._previewer: @@ -623,16 +625,20 @@ class Browser(QMainWindow): else: self.onTogglePreview() + def toggle_preview_button_state(self, active: bool) -> None: + if self.editor.web: + self.editor.web.eval( + f"editorToolbar.togglePreviewButtonState({json.dumps(active)});" + ) + def _cleanup_preview(self) -> None: if self._previewer: self._previewer.cancel_timer() self._previewer.close() def _on_preview_closed(self) -> None: - if self.editor.web: - self.editor.web.eval( - "document.getElementById('previewButton').classList.remove('highlighted')" - ) + av_player.stop_and_clear_queue() + self.toggle_preview_button_state(False) self._previewer = None # Card deletion diff --git a/ts/editor/EditorToolbar.svelte b/ts/editor/EditorToolbar.svelte index b81e2abdd..1011f689b 100644 --- a/ts/editor/EditorToolbar.svelte +++ b/ts/editor/EditorToolbar.svelte @@ -28,11 +28,12 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html /* Our dynamic components */ import AddonButtons from "./AddonButtons.svelte"; - import PreviewButton from "./PreviewButton.svelte"; + import PreviewButton, { togglePreviewButtonState } from "./PreviewButton.svelte"; export const editorToolbar = { AddonButtons, PreviewButton, + togglePreviewButtonState, }; diff --git a/ts/editor/PreviewButton.svelte b/ts/editor/PreviewButton.svelte index bfda149f8..4e494183c 100644 --- a/ts/editor/PreviewButton.svelte +++ b/ts/editor/PreviewButton.svelte @@ -2,6 +2,13 @@ Copyright: Ankitects Pty Ltd and contributors License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> + +