Don't emit predicted_navigation when reloading because of it
When we reload because of a config change in _on_load_finished, we can't use self.reload() as no URL is set yet. Instead, we call self.openurl with the current URL. However, we need to make sure we don't emit predicted_navigation again at that point. This should (finally) fix #3718
This commit is contained in:
parent
5dbda3016b
commit
1e4b80d1ac
@ -822,9 +822,10 @@ class AbstractTab(QWidget):
|
|||||||
def load_status(self):
|
def load_status(self):
|
||||||
return self._load_status
|
return self._load_status
|
||||||
|
|
||||||
def _openurl_prepare(self, url):
|
def _openurl_prepare(self, url, *, predict=True):
|
||||||
qtutils.ensure_valid(url)
|
qtutils.ensure_valid(url)
|
||||||
self.predicted_navigation.emit(url)
|
if predict:
|
||||||
|
self.predicted_navigation.emit(url)
|
||||||
|
|
||||||
def openurl(self, url):
|
def openurl(self, url):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -669,9 +669,15 @@ class WebEngineTab(browsertab.AbstractTab):
|
|||||||
self.zoom.set_factor(self._saved_zoom)
|
self.zoom.set_factor(self._saved_zoom)
|
||||||
self._saved_zoom = None
|
self._saved_zoom = None
|
||||||
|
|
||||||
def openurl(self, url):
|
def openurl(self, url, *, predict=True):
|
||||||
|
"""Open the given URL in this tab.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
url: The QUrl to open.
|
||||||
|
predict: If set to False, predicted_navigation is not emitted.
|
||||||
|
"""
|
||||||
self._saved_zoom = self.zoom.factor()
|
self._saved_zoom = self.zoom.factor()
|
||||||
self._openurl_prepare(url)
|
self._openurl_prepare(url, predict=predict)
|
||||||
self._widget.load(url)
|
self._widget.load(url)
|
||||||
|
|
||||||
def url(self, requested=False):
|
def url(self, requested=False):
|
||||||
@ -914,10 +920,10 @@ class WebEngineTab(browsertab.AbstractTab):
|
|||||||
if ok and self._reload_url is not None:
|
if ok and self._reload_url is not None:
|
||||||
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-66656
|
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-66656
|
||||||
log.config.debug(
|
log.config.debug(
|
||||||
"Reloading {} because of config change".format(
|
"Loading {} again because of config change".format(
|
||||||
self._reload_url.toDisplayString()))
|
self._reload_url.toDisplayString()))
|
||||||
QTimer.singleShot(100, lambda url=self._reload_url:
|
QTimer.singleShot(100, lambda url=self._reload_url:
|
||||||
self.openurl(url))
|
self.openurl(url, predict=False))
|
||||||
self._reload_url = None
|
self._reload_url = None
|
||||||
|
|
||||||
if not qtutils.version_check('5.10', compiled=False):
|
if not qtutils.version_check('5.10', compiled=False):
|
||||||
|
Loading…
Reference in New Issue
Block a user