summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2023-09-30 14:51:14 +1300
committertoofar <toofar@spalge.com>2023-09-30 14:51:14 +1300
commit0c04567febe249fcfde3460ac1a0a0e4f3703564 (patch)
treeda2464656de9933399eaba27f98779777494cb72
parent690813e1b10fee83660a6740ab3aabc575a9b125 (diff)
parent920a18ab15f08370778054feec06a65214d976cc (diff)
downloadqutebrowser-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.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)