diff options
-rw-r--r-- | doc/changelog.asciidoc | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-check-manifest.txt | 2 | ||||
-rw-r--r-- | misc/requirements/requirements-dev.txt | 8 | ||||
-rw-r--r-- | misc/requirements/requirements-pyinstaller.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-pylint.txt | 8 | ||||
-rw-r--r-- | misc/requirements/requirements-pyroma.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-sphinx.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-tests.txt | 12 | ||||
-rw-r--r-- | misc/requirements/requirements-tox.txt | 2 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginesettings.py | 26 | ||||
-rw-r--r-- | qutebrowser/mainwindow/prompt.py | 23 | ||||
-rw-r--r-- | scripts/dev/changelog_urls.json | 2 | ||||
-rw-r--r-- | scripts/dev/ci/docker/Dockerfile.j2 | 4 |
13 files changed, 69 insertions, 34 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 6fe4d4977..774ba3a18 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -54,6 +54,10 @@ Fixed - Graphical glitches in Google sheets and PDF.js via a new setting `qt.workarounds.disable_accelerated_2d_canvas` to disable the accelerated 2D canvas feature which defaults to enabled on affected Qt versions. (#7489) +- The download dialog should no longer freeze when browsing to directories + with many files. (#7925) +- The app.slack.com User-Agent quirk now targets chromium 112 on Qt versions + lower than 6.6.0 (previously it always targets chromium 99) (#7951) - Workaround a Qt issue causing jpeg files to not show up in the upload file picker when it was filtering for image filetypes (#7866) diff --git a/misc/requirements/requirements-check-manifest.txt b/misc/requirements/requirements-check-manifest.txt index f39b3bb27..91ceac76a 100644 --- a/misc/requirements/requirements-check-manifest.txt +++ b/misc/requirements/requirements-check-manifest.txt @@ -3,7 +3,7 @@ build==1.0.3 check-manifest==0.49 importlib-metadata==6.8.0 -packaging==23.1 +packaging==23.2 pyproject_hooks==1.0.0 tomli==2.0.1 zipp==3.17.0 diff --git a/misc/requirements/requirements-dev.txt b/misc/requirements/requirements-dev.txt index 1547a0da5..eb0ace85e 100644 --- a/misc/requirements/requirements-dev.txt +++ b/misc/requirements/requirements-dev.txt @@ -3,8 +3,8 @@ build==1.0.3 bump2version==1.0.1 certifi==2023.7.22 -cffi==1.15.1 -charset-normalizer==3.2.0 +cffi==1.16.0 +charset-normalizer==3.3.0 cryptography==41.0.4 docutils==0.20.1 github3.py==4.0.1 @@ -20,7 +20,7 @@ markdown-it-py==3.0.0 mdurl==0.1.2 more-itertools==10.1.0 nh3==0.2.14 -packaging==23.1 +packaging==23.2 pkginfo==1.9.6 ply==3.11 pycparser==2.21 @@ -34,7 +34,7 @@ readme-renderer==42.0 requests==2.31.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 -rich==13.5.3 +rich==13.6.0 SecretStorage==3.3.3 sip==6.7.11 six==1.16.0 diff --git a/misc/requirements/requirements-pyinstaller.txt b/misc/requirements/requirements-pyinstaller.txt index 2f0b35e0d..bb4bb53fe 100644 --- a/misc/requirements/requirements-pyinstaller.txt +++ b/misc/requirements/requirements-pyinstaller.txt @@ -1,5 +1,5 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -altgraph==0.17.3 +altgraph==0.17.4 pyinstaller @ git+https://github.com/pyinstaller/pyinstaller.git@79f62ef29822169ae00cd4271390d0e3175476ad -pyinstaller-hooks-contrib==2023.8 +pyinstaller-hooks-contrib==2023.9 diff --git a/misc/requirements/requirements-pylint.txt b/misc/requirements/requirements-pylint.txt index f5241bc60..4aabef52c 100644 --- a/misc/requirements/requirements-pylint.txt +++ b/misc/requirements/requirements-pylint.txt @@ -1,9 +1,9 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -astroid==2.15.7 +astroid==2.15.8 certifi==2023.7.22 -cffi==1.15.1 -charset-normalizer==3.2.0 +cffi==1.16.0 +charset-normalizer==3.3.0 cryptography==41.0.4 dill==0.3.7 github3.py==4.0.1 @@ -15,7 +15,7 @@ pefile==2023.2.7 platformdirs==3.10.0 pycparser==2.21 PyJWT==2.8.0 -pylint==2.17.5 +pylint==2.17.7 python-dateutil==2.8.2 ./scripts/dev/pylint_checkers requests==2.31.0 diff --git a/misc/requirements/requirements-pyroma.txt b/misc/requirements/requirements-pyroma.txt index c4f6033ba..04cdcefe3 100644 --- a/misc/requirements/requirements-pyroma.txt +++ b/misc/requirements/requirements-pyroma.txt @@ -2,11 +2,11 @@ build==1.0.3 certifi==2023.7.22 -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 docutils==0.20.1 idna==3.4 importlib-metadata==6.8.0 -packaging==23.1 +packaging==23.2 Pygments==2.16.1 pyproject_hooks==1.0.0 pyroma==4.2 diff --git a/misc/requirements/requirements-sphinx.txt b/misc/requirements/requirements-sphinx.txt index 8480018ca..c28a4c2d0 100644 --- a/misc/requirements/requirements-sphinx.txt +++ b/misc/requirements/requirements-sphinx.txt @@ -3,14 +3,14 @@ alabaster==0.7.13 Babel==2.12.1 certifi==2023.7.22 -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 docutils==0.20.1 idna==3.4 imagesize==1.4.1 importlib-metadata==6.8.0 Jinja2==3.1.2 MarkupSafe==2.1.3 -packaging==23.1 +packaging==23.2 Pygments==2.16.1 pytz==2023.3.post1 requests==2.31.0 diff --git a/misc/requirements/requirements-tests.txt b/misc/requirements/requirements-tests.txt index 08da32093..19af1d9f9 100644 --- a/misc/requirements/requirements-tests.txt +++ b/misc/requirements/requirements-tests.txt @@ -4,16 +4,16 @@ attrs==23.1.0 beautifulsoup4==4.12.2 blinker==1.6.2 certifi==2023.7.22 -charset-normalizer==3.2.0 +charset-normalizer==3.3.0 cheroot==10.0.0 click==8.1.7 coverage==7.3.1 exceptiongroup==1.1.3 execnet==2.0.2 filelock==3.12.4 -Flask==2.3.3 +Flask==3.0.0 hunter==3.6.1 -hypothesis==6.87.0 +hypothesis==6.87.1 idna==3.4 importlib-metadata==6.8.0 iniconfig==2.0.0 @@ -24,7 +24,7 @@ Mako==1.2.4 manhole==1.8.0 # MarkupSafe==2.1.3 more-itertools==10.1.0 -packaging==23.1 +packaging==23.2 parse==1.19.1 parse-type==0.6.2 pluggy==1.3.0 @@ -37,7 +37,7 @@ pytest-cov==4.1.0 pytest-instafail==0.5.0 pytest-mock==3.11.1 pytest-qt==4.2.0 -pytest-repeat==0.9.1 +pytest-repeat==0.9.2 pytest-rerunfailures==12.0 pytest-xdist==3.3.1 pytest-xvfb==3.0.0 @@ -53,5 +53,5 @@ tomli==2.0.1 typing_extensions==4.8.0 urllib3==2.0.5 vulture==2.9.1 -Werkzeug==2.3.7 +Werkzeug==3.0.0 zipp==3.17.0 diff --git a/misc/requirements/requirements-tox.txt b/misc/requirements/requirements-tox.txt index 9be603451..d98da70d9 100644 --- a/misc/requirements/requirements-tox.txt +++ b/misc/requirements/requirements-tox.txt @@ -5,7 +5,7 @@ chardet==5.2.0 colorama==0.4.6 distlib==0.3.7 filelock==3.12.4 -packaging==23.1 +packaging==23.2 pip==23.2.1 platformdirs==3.10.0 pluggy==1.3.0 diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index fb5403ae2..d0b6b5beb 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -430,12 +430,21 @@ def _init_site_specific_quirks(): "AppleWebKit/{webkit_version} (KHTML, like Gecko) " "{upstream_browser_key}/{upstream_browser_version} " "Safari/{webkit_version}") - new_chrome_ua = ("Mozilla/5.0 ({os_info}) " - "AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/99 " - "Safari/537.36") firefox_ua = "Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0" + def maybe_newer_chrome_ua(at_least_version): + """Return a new UA if our current chrome version isn't at least at_least_version.""" + current_chome_version = version.qtwebengine_versions().chromium_major + if current_chome_version >= at_least_version: + return None + + return ( + "Mozilla/5.0 ({os_info}) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + f"Chrome/{at_least_version} " + "Safari/537.36" + ) + user_agents = [ # Needed to avoid a ""WhatsApp works with Google Chrome 36+" error # page which doesn't allow to use WhatsApp Web at all. Also see the @@ -450,13 +459,14 @@ def _init_site_specific_quirks(): # Needed because Slack adds an error which prevents using it relatively # aggressively, despite things actually working fine. - # September 2020: Qt 5.12 works, but Qt <= 5.11 shows the error. - # FIXME:qt6 Still needed? - # https://github.com/qutebrowser/qutebrowser/issues/4669 - ("ua-slack", 'https://*.slack.com/*', new_chrome_ua), + # October 2023: Slack claims they only support 112+. On #7951 at least + # one user claims it still works fine on 108 based Qt versions. + ("ua-slack", 'https://*.slack.com/*', maybe_newer_chrome_ua(112)), ] for name, pattern, ua in user_agents: + if not ua: + continue if name not in config.val.content.site_specific_quirks.skip: config.instance.set_obj('content.headers.user_agent', ua, pattern=urlmatch.UrlPattern(pattern), diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index 80edf4412..84b6cd18f 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -15,8 +15,8 @@ from qutebrowser.qt.core import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelI QItemSelectionModel, QObject, QEventLoop) from qutebrowser.qt.widgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit, QLabel, QTreeView, QSizePolicy, - QSpacerItem) -from qutebrowser.qt.gui import QFileSystemModel + QSpacerItem, QFileIconProvider) +from qutebrowser.qt.gui import (QFileSystemModel, QIcon) from qutebrowser.browser import downloads from qutebrowser.config import config, configtypes, configexc, stylesheet @@ -624,6 +624,21 @@ class LineEditPrompt(_BasePrompt): return [('prompt-accept', 'Accept'), ('mode-leave', 'Abort')] +class NullIconProvider(QFileIconProvider): + + """Returns empty icon for everything.""" + + def __init__(self): + super().__init__() + self.null_icon = QIcon() + + def icon(self, _t): + return self.null_icon + + def type(self, _info): + return 'unknown' + + class FilenamePrompt(_BasePrompt): """A prompt for a filename.""" @@ -725,6 +740,10 @@ class FilenamePrompt(_BasePrompt): def _init_fileview(self): self._file_view = QTreeView(self) self._file_model = QFileSystemModel(self) + + # avoid icon and mime type lookups, they are slow in Qt6 + self._file_model.setIconProvider(NullIconProvider()) + self._file_view.setModel(self._file_model) self._file_view.clicked.connect(self._insert_path) diff --git a/scripts/dev/changelog_urls.json b/scripts/dev/changelog_urls.json index 5a9c9b34a..1dec20d91 100644 --- a/scripts/dev/changelog_urls.json +++ b/scripts/dev/changelog_urls.json @@ -59,7 +59,7 @@ "pep8-naming": "https://github.com/PyCQA/pep8-naming/blob/main/CHANGELOG.rst", "pycodestyle": "https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt", "pyflakes": "https://github.com/PyCQA/pyflakes/blob/master/NEWS.rst", - "cffi": "https://foss.heptapod.net/pypy/cffi/-/blob/branch/default/doc/source/whatsnew.rst", + "cffi": "https://github.com/python-cffi/cffi/blob/main/doc/source/whatsnew.rst", "astroid": "https://github.com/PyCQA/astroid/blob/main/ChangeLog", "pytest-instafail": "https://github.com/pytest-dev/pytest-instafail/blob/master/CHANGES.rst", "coverage": "https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst", diff --git a/scripts/dev/ci/docker/Dockerfile.j2 b/scripts/dev/ci/docker/Dockerfile.j2 index 3a1adbdef..ee398978e 100644 --- a/scripts/dev/ci/docker/Dockerfile.j2 +++ b/scripts/dev/ci/docker/Dockerfile.j2 @@ -41,7 +41,9 @@ RUN pacman -U --noconfirm \ https://archive.archlinux.org/packages/p/python/python-3.10.10-1-x86_64.pkg.tar.zst \ https://archive.archlinux.org/packages/i/icu/icu-72.1-2-x86_64.pkg.tar.zst \ https://archive.archlinux.org/packages/l/libxml2/libxml2-2.10.4-4-x86_64.pkg.tar.zst \ - https://archive.archlinux.org/packages/q/qt5-base/qt5-base-5.15.10%2Bkde%2Br129-3-x86_64.pkg.tar.zst + https://archive.archlinux.org/packages/q/qt5-base/qt5-base-5.15.10%2Bkde%2Br129-3-x86_64.pkg.tar.zst \ + https://archive.archlinux.org/packages/q/qt5-declarative/qt5-declarative-5.15.10%2Bkde%2Br31-1-x86_64.pkg.tar.zst + RUN python3 -m ensurepip RUN python3 -m pip install tox pyqt5-sip {% endif %} |