diff options
Diffstat (limited to 'qutebrowser/browser/webengine/webenginetab.py')
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index e55d75ecd..1c712db5e 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1,23 +1,11 @@ -# Copyright 2016-2021 Florian Bruhin (The Compiler) <mail@qutebrowser.org> +# SPDX-FileCopyrightText: Florian Bruhin (The Compiler) <mail@qutebrowser.org> # -# This file is part of qutebrowser. -# -# qutebrowser is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# qutebrowser is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>. +# SPDX-License-Identifier: GPL-3.0-or-later -"""Wrapper over a QWebEngineView.""" +"""Wrapper over a WebEngineView.""" import math +import struct import functools import dataclasses import re @@ -25,9 +13,8 @@ import html as html_utils from typing import cast, Union, Optional from qutebrowser.qt.core import (pyqtSignal, pyqtSlot, Qt, QPoint, QPointF, QTimer, QUrl, - QObject) + QObject, QByteArray) from qutebrowser.qt.network import QAuthenticator -from qutebrowser.qt.webenginewidgets import QWebEngineView from qutebrowser.qt.webenginecore import QWebEnginePage, QWebEngineScript, QWebEngineHistory from qutebrowser.config import config @@ -400,7 +387,8 @@ class WebEngineCaret(browsertab.AbstractCaret): # https://bugreports.qt.io/browse/QTBUG-53134 # Even on Qt 5.10 selectedText() seems to work poorly, see # https://github.com/qutebrowser/qutebrowser/issues/3523 - # FIXME:qt6 Reevaluate? + # With Qt 6.2-6.5, there still seem to be issues (especially with + # multi-line text) self._tab.run_js_async(javascript.assemble('caret', 'getSelection'), callback) @@ -624,8 +612,16 @@ class WebEngineHistoryPrivate(browsertab.AbstractHistoryPrivate): self._tab = tab self._history = cast(QWebEngineHistory, None) + def _serialize_data(self, stream_version, count, current_index): + return struct.pack(">IIi", stream_version, count, current_index) + def serialize(self): - return qtutils.serialize(self._history) + data = qtutils.serialize(self._history) + # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-117489 + if data == self._serialize_data(stream_version=4, count=1, current_index=0): + fixed = self._serialize_data(stream_version=4, count=0, current_index=-1) + return QByteArray(fixed) + return data def deserialize(self, data): qtutils.deserialize(data, self._history) @@ -828,6 +824,8 @@ class WebEngineAudio(browsertab.AbstractAudio): page.recentlyAudibleChanged.connect(self._delayed_recently_audible_changed) self._tab.url_changed.connect(self._on_url_changed) config.instance.changed.connect(self._on_config_changed) + self._silence_timer.timeout.connect(functools.partial( + self.recently_audible_changed.emit, False)) # WORKAROUND for recentlyAudibleChanged being emitted without delay from the moment # that audio is dropped. @@ -843,8 +841,6 @@ class WebEngineAudio(browsertab.AbstractAudio): # Ignore all subsequent calls while the tab is muted with an active timer if timer.isActive(): return - timer.timeout.connect( - functools.partial(self.recently_audible_changed.emit, recently_audible)) timer.start() def set_muted(self, muted: bool, override: bool = False) -> None: @@ -1270,7 +1266,7 @@ class WebEngineTab(browsertab.AbstractTab): abort_questions = pyqtSignal() - _widget: QWebEngineView + _widget: webview.WebEngineView search: WebEngineSearch audio: WebEngineAudio printing: WebEnginePrinting |