diff options
author | toofar <toofar@spalge.com> | 2023-09-30 14:51:14 +1300 |
---|---|---|
committer | toofar <toofar@spalge.com> | 2023-09-30 14:51:14 +1300 |
commit | 0c04567febe249fcfde3460ac1a0a0e4f3703564 (patch) | |
tree | da2464656de9933399eaba27f98779777494cb72 | |
parent | 690813e1b10fee83660a6740ab3aabc575a9b125 (diff) | |
parent | 920a18ab15f08370778054feec06a65214d976cc (diff) | |
download | qutebrowser-0c04567febe249fcfde3460ac1a0a0e4f3703564.tar.gz qutebrowser-0c04567febe249fcfde3460ac1a0a0e4f3703564.zip |
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.
-rw-r--r-- | qutebrowser/mainwindow/prompt.py | 23 |
1 files 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) |