diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 61f0302626..ee3941b2fe 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -477,6 +477,7 @@ class WebView(RestartingWebEngineView): self.current_cfi = self.current_content_file = None RestartingWebEngineView.__init__(self, parent) self.tts = TTS(self) + self.tts.settings_changed.connect(self.tts_settings_changed) self.tts.event_received.connect(self.tts_event_received) self.dead_renderer_error_shown = False self.render_process_failed.connect(self.render_process_died) @@ -716,3 +717,6 @@ class WebView(RestartingWebEngineView): def tts_event_received(self, which, data): self.execute_when_ready('tts_event', which, data) + + def tts_settings_changed(self, ui_settings): + self.execute_when_ready('tts_event', 'configured', ui_settings) diff --git a/src/pyj/read_book/read_aloud.pyj b/src/pyj/read_book/read_aloud.pyj index 4ad215fac0..aca32e303e 100644 --- a/src/pyj/read_book/read_aloud.pyj +++ b/src/pyj/read_book/read_aloud.pyj @@ -132,6 +132,7 @@ class ReadAloud: def configure(self): self.pause() + self.waiting_for_configure = True ui_operations.tts('configure') def play(self): @@ -200,6 +201,10 @@ class ReadAloud: elif which is 'end': self.state = STOPPED self.view.show_next_spine_item() + elif which is 'configured': + if self.waiting_for_configure: + self.waiting_for_configure = False + self.play() def send_message(self, type, **kw): self.view.iframe_wrapper.send_message('tts', type=type, **kw)