Add a hint pointing to the locale workaround

See #6235
This commit is contained in:
Florian Bruhin 2021-03-11 17:00:04 +01:00
parent 4709d46936
commit de42cffd4f
1 changed files with 28 additions and 9 deletions

View File

@ -35,7 +35,7 @@ from qutebrowser.keyinput import modeman
from qutebrowser.mainwindow import tabwidget, mainwindow
from qutebrowser.browser import signalfilter, browsertab, history
from qutebrowser.utils import (log, usertypes, utils, qtutils, objreg,
urlutils, message, jinja)
urlutils, message, jinja, version)
from qutebrowser.misc import quitter
@ -936,15 +936,34 @@ class TabbedBrowser(QWidget):
}
msg = messages[status] + f" (status {code})"
def show_error_page(html):
tab.set_html(html)
log.webview.error(msg)
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-91715
versions = version.qtwebengine_versions()
is_qtbug_91715 = (
status == browsertab.TerminationStatus.unknown and
code == 1002 and
versions.webengine == utils.VersionNumber(5, 15, 3))
url_string = tab.url(requested=True).toDisplayString()
error_page = jinja.render(
'error.html', title="Error loading {}".format(url_string),
url=url_string, error=msg)
QTimer.singleShot(100, lambda: show_error_page(error_page))
if is_qtbug_91715:
log.webview.error(msg)
log.webview.error('')
log.webview.error(
'NOTE: If you see this and "Network service crashed, restarting '
'service.", please see:')
log.webview.error('https://github.com/qutebrowser/qutebrowser/issues/6235')
log.webview.error(
'You can set the "qt.workarounds.locale" setting in qutebrowser to '
'work around the issue.')
log.webview.error(
'A proper fix is likely available in QtWebEngine soon (which is why '
'the workaround is disabled by default).')
log.webview.error('')
else:
log.webview.error(msg)
url_string = tab.url(requested=True).toDisplayString()
error_page = jinja.render(
'error.html', title="Error loading {}".format(url_string),
url=url_string, error=msg)
QTimer.singleShot(100, lambda: tab.set_html(error_page))
def resizeEvent(self, e):
"""Extend resizeEvent of QWidget to emit a resized signal afterwards.