From 9c63714e80e0a72d63431997306c11765e36d1bf Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Mon, 7 Aug 2017 15:15:31 +1000 Subject: [PATCH] delay setHtml() until previous page has fully loaded based on https://github.com/dae/anki/pull/194/commits/0241eb70dc203b1aadc300c6895f52ab2d44d951 --- aqt/webview.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/aqt/webview.py b/aqt/webview.py index 4f1d3c814..0bd3a2b34 100644 --- a/aqt/webview.py +++ b/aqt/webview.py @@ -76,6 +76,7 @@ class AnkiWebView(QWebEngineView): self._page = AnkiWebPage(self._onBridgeCmd) self._domDone = True + self._pendingJS = [] self.setPage(self._page) self._page.profile().setHttpCacheType(QWebEngineProfile.NoCache) @@ -139,11 +140,12 @@ class AnkiWebView(QWebEngineView): pass def setHtml(self, html): - if not self._domDone: + if not self._domDone or self._pendingJS: + # defer update until previous page has initialized if devMode: - import traceback - print("ignoring setHtml() called before DOM ready") - print("caller was", traceback.format_stack()[-3]) + print("deferring setHtml() until page is ready") + from aqt import mw + mw.progress.timer(25, lambda: self.setHtml(html), False) return app = QApplication.instance() oldFocus = app.focusWidget()