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.
This commit is contained in:
toofar 2023-09-30 14:51:14 +13:00
commit 0c04567feb
1 changed files with 21 additions and 2 deletions

View File

@ -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)