diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 6c7298d564..bd2c10dcea 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -229,6 +229,7 @@ def create_profile(): class ViewerBridge(Bridge): view_created = from_js(object) + on_iframe_ready = from_js() content_file_changed = from_js(object) set_session_data = from_js(object, object) set_local_storage = from_js(object, object) @@ -499,6 +500,7 @@ class WebView(RestartingWebEngineView): self._page.linkHovered.connect(self.link_hovered) self.view_is_ready = False self.bridge.bridge_ready.connect(self.on_bridge_ready) + self.bridge.on_iframe_ready.connect(self.on_iframe_ready) self.bridge.view_created.connect(self.on_view_created) self.bridge.content_file_changed.connect(self.on_content_file_changed) self.bridge.set_session_data.connect(self.set_session_data) @@ -628,6 +630,9 @@ class WebView(RestartingWebEngineView): for func, args in iteritems(self.pending_bridge_ready_actions): getattr(self.bridge, func)(*args) + def on_iframe_ready(self): + performance_monitor('iframe ready') + def on_view_created(self, data): self.view_created.emit(data) self.view_is_ready = True diff --git a/src/pyj/read_book/view.pyj b/src/pyj/read_book/view.pyj index 057d20354c..3f7f8902fb 100644 --- a/src/pyj/read_book/view.pyj +++ b/src/pyj/read_book/view.pyj @@ -769,6 +769,8 @@ class View: def on_iframe_ready(self, data): data.width, data.height = self.iframe_size() + if ui_operations.on_iframe_ready: + ui_operations.on_iframe_ready() return self.do_pending_load def do_pending_load(self): diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj index adeac66e34..30aecaeff4 100644 --- a/src/pyj/viewer-main.pyj +++ b/src/pyj/viewer-main.pyj @@ -431,6 +431,8 @@ if window is window.top: to_python.show_book_folder() ui_operations.show_help = def(which): to_python.show_help(which) + ui_operations.on_iframe_ready = def(): + to_python.on_iframe_ready() document.body.appendChild(E.div(id='view')) window.onerror = onerror