Merge remote-tracking branch 'origin/pr/3427'
This commit is contained in:
commit
73b6dea1f4
@ -24,7 +24,8 @@ import functools
|
||||
import html as html_utils
|
||||
|
||||
import sip
|
||||
from PyQt5.QtCore import pyqtSlot, Qt, QEvent, QPoint, QPointF, QUrl, QTimer
|
||||
from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QEvent, QPoint, QPointF,
|
||||
QUrl, QTimer)
|
||||
from PyQt5.QtGui import QKeyEvent
|
||||
from PyQt5.QtNetwork import QAuthenticator
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
@ -539,7 +540,15 @@ class WebEngineElements(browsertab.AbstractElements):
|
||||
|
||||
class WebEngineTab(browsertab.AbstractTab):
|
||||
|
||||
"""A QtWebEngine tab in the browser."""
|
||||
"""A QtWebEngine tab in the browser.
|
||||
|
||||
Signals:
|
||||
_load_finished_fake:
|
||||
Used in place of unreliable loadFinished
|
||||
"""
|
||||
|
||||
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-65223
|
||||
_load_finished_fake = pyqtSignal(bool)
|
||||
|
||||
def __init__(self, *, win_id, mode_manager, private, parent=None):
|
||||
super().__init__(win_id=win_id, mode_manager=mode_manager,
|
||||
@ -793,6 +802,24 @@ class WebEngineTab(browsertab.AbstractTab):
|
||||
}
|
||||
self.renderer_process_terminated.emit(status_map[status], exitcode)
|
||||
|
||||
@pyqtSlot(int)
|
||||
def _on_load_progress_workaround(self, perc):
|
||||
"""Use loadProgress(100) to emit loadFinished(True).
|
||||
|
||||
See https://bugreports.qt.io/browse/QTBUG-65223
|
||||
"""
|
||||
if perc == 100 and self.load_status() != usertypes.LoadStatus.error:
|
||||
self._load_finished_fake.emit(True)
|
||||
|
||||
@pyqtSlot(bool)
|
||||
def _on_load_finished_workaround(self, ok):
|
||||
"""Use only loadFinished(False).
|
||||
|
||||
See https://bugreports.qt.io/browse/QTBUG-65223
|
||||
"""
|
||||
if not ok:
|
||||
self._load_finished_fake.emit(False)
|
||||
|
||||
def _connect_signals(self):
|
||||
view = self._widget
|
||||
page = view.page()
|
||||
@ -801,9 +828,6 @@ class WebEngineTab(browsertab.AbstractTab):
|
||||
page.linkHovered.connect(self.link_hovered)
|
||||
page.loadProgress.connect(self._on_load_progress)
|
||||
page.loadStarted.connect(self._on_load_started)
|
||||
page.loadFinished.connect(self._on_history_trigger)
|
||||
page.loadFinished.connect(self._restore_zoom)
|
||||
page.loadFinished.connect(self._on_load_finished)
|
||||
page.certificate_error.connect(self._on_ssl_errors)
|
||||
page.authenticationRequired.connect(self._on_authentication_required)
|
||||
page.proxyAuthenticationRequired.connect(
|
||||
@ -816,6 +840,19 @@ class WebEngineTab(browsertab.AbstractTab):
|
||||
view.renderProcessTerminated.connect(
|
||||
self._on_render_process_terminated)
|
||||
view.iconChanged.connect(self.icon_changed)
|
||||
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-65223
|
||||
if qtutils.version_check('5.10', compiled=False):
|
||||
page.loadProgress.connect(self._on_load_progress_workaround)
|
||||
self._load_finished_fake.connect(self._on_history_trigger)
|
||||
self._load_finished_fake.connect(self._restore_zoom)
|
||||
self._load_finished_fake.connect(self._on_load_finished)
|
||||
page.loadFinished.connect(self._on_load_finished_workaround)
|
||||
else:
|
||||
# for older Qt versions which break with the above
|
||||
page.loadProgress.connect(self._on_load_progress)
|
||||
page.loadFinished.connect(self._on_history_trigger)
|
||||
page.loadFinished.connect(self._restore_zoom)
|
||||
page.loadFinished.connect(self._on_load_finished)
|
||||
|
||||
def event_target(self):
|
||||
return self._widget.focusProxy()
|
||||
|
@ -86,7 +86,7 @@ Feature: Setting positional marks
|
||||
And I wait until the scroll position changed to 10/10
|
||||
Then the page should be scrolled to 10 10
|
||||
|
||||
@qtwebengine_todo: Does not emit loaded signal for fragments?
|
||||
@qtwebengine_skip: Does not emit loaded signal for fragments?
|
||||
Scenario: Jumping back after following a link
|
||||
When I hint with args "links normal" and follow s
|
||||
And I wait until data/marks.html#bottom is loaded
|
||||
|
Loading…
Reference in New Issue
Block a user