summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/webengine/webenginetab.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/webengine/webenginetab.py')
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py42
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