From 44b7fd33ab68cc50d3b9bfd5b5e1958807049d3f Mon Sep 17 00:00:00 2001 From: toofar Date: Sat, 30 Sep 2023 14:51:14 +1300 Subject: Merge pull request #7925 from fstecker/download_icons Override IconProvider for QFileSystemModel to prevent a slowdown in the download dialog on Linux when browsing to directories with many files. --- qutebrowser/mainwindow/prompt.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) 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) -- cgit v1.2.3-54-g00ecf