summaryrefslogtreecommitdiff
path: root/qutebrowser/config/qtargs.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/config/qtargs.py')
-rw-r--r--qutebrowser/config/qtargs.py39
1 files changed, 34 insertions, 5 deletions
diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py
index 7513554b3..934953d0a 100644
--- a/qutebrowser/config/qtargs.py
+++ b/qutebrowser/config/qtargs.py
@@ -8,7 +8,7 @@ import os
import sys
import argparse
import pathlib
-from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple
+from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union, Callable
from qutebrowser.qt import machinery
from qutebrowser.qt.core import QLocale
@@ -273,10 +273,19 @@ def _qtwebengine_args(
if disabled_features:
yield _DISABLE_FEATURES + ','.join(disabled_features)
- yield from _qtwebengine_settings_args()
+ yield from _qtwebengine_settings_args(versions)
-_WEBENGINE_SETTINGS: Dict[str, Dict[Any, Optional[str]]] = {
+_SettingValueType = Union[
+ str,
+ Callable[
+ [
+ version.WebEngineVersions,
+ ],
+ str,
+ ],
+]
+_WEBENGINE_SETTINGS: Dict[str, Dict[Any, Optional[_SettingValueType]]] = {
'qt.force_software_rendering': {
'software-opengl': None,
'qt-quick': None,
@@ -324,13 +333,33 @@ _WEBENGINE_SETTINGS: Dict[str, Dict[Any, Optional[str]]] = {
'auto':
'--enable-experimental-web-platform-features' if machinery.IS_QT5 else None,
},
+ 'qt.workarounds.disable_accelerated_2d_canvas': {
+ 'always': '--disable-accelerated-2d-canvas',
+ 'never': None,
+ 'auto': lambda versions: 'always'
+ if machinery.IS_QT6
+ and versions.chromium_major
+ and versions.chromium_major < 111
+ else 'never',
+ },
}
-def _qtwebengine_settings_args() -> Iterator[str]:
+def _qtwebengine_settings_args(versions: version.WebEngineVersions) -> Iterator[str]:
for setting, args in sorted(_WEBENGINE_SETTINGS.items()):
arg = args[config.instance.get(setting)]
- if arg is not None:
+ if callable(arg):
+ new_value = arg(versions)
+ assert (
+ new_value in args
+ ), f"qt.settings feature detection returned an unrecognized value: {new_value} for {setting}"
+ result = args[new_value]
+ if result is not None:
+ assert isinstance(
+ result, str
+ ), f"qt.settings feature detection returned an invalid type: {type(result)} for {setting}"
+ yield result
+ elif arg is not None:
yield arg