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
-->
+
+