summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2023-09-30 14:51:14 +1300
committerFlorian Bruhin <me@the-compiler.org>2023-10-02 14:57:28 +0200
commit44b7fd33ab68cc50d3b9bfd5b5e1958807049d3f (patch)
tree0b8e5bd14a2355dcb4a7da4a503f194f1a98d8b5
parentdf7264a6d551be82a8a709cd3e85dc40c7195617 (diff)
downloadqutebrowser-44b7fd33ab68cc50d3b9bfd5b5e1958807049d3f.tar.gz
qutebrowser-44b7fd33ab68cc50d3b9bfd5b5e1958807049d3f.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.py23
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)