From f3b44f361411fd3fdc5a5e0d1bb5474faad40451 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 3 Sep 2024 17:22:19 +0530 Subject: [PATCH] Also prevent spurious stop event on UI stop --- src/calibre/gui2/tts2/manager.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/tts2/manager.py b/src/calibre/gui2/tts2/manager.py index 4c14e20ca2..7857c6b16a 100644 --- a/src/calibre/gui2/tts2/manager.py +++ b/src/calibre/gui2/tts2/manager.py @@ -135,6 +135,10 @@ class TTSManager(QObject): return self._tts def stop(self) -> None: + self.state = QTextToSpeech.State.Ready # so no event is sent to the UI after a stop triggered by the UI + self._stop() + + def _stop(self) -> None: self.tracker.clear() self.tts.stop() @@ -148,13 +152,14 @@ class TTSManager(QObject): self.speak_marked_text([0, text]) def speak_marked_text(self, marked_text): - self.stop() + self._stop() self.tts.say(self.tracker.parse_marked_text(marked_text)) @contextmanager def resume_after(self): rd = ResumeData() - rd.is_speaking = self._tts is not None and self.state in (QTextToSpeech.State.Speaking, QTextToSpeech.State.Synthesizing, QTextToSpeech.State.Paused) + rd.is_speaking = self._tts is not None and self.state in ( + QTextToSpeech.State.Speaking, QTextToSpeech.State.Synthesizing, QTextToSpeech.State.Paused) if self.state is not QTextToSpeech.State.Paused: self.tts.pause() yield rd