From 522899a64f3c68875479b55d4c60d4eb0c03abed Mon Sep 17 00:00:00 2001 From: Florian Stecker Date: Tue, 19 Sep 2023 12:03:04 -0400 Subject: Override IconProvider for QFileSystemModel --- qutebrowser/mainwindow/prompt.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index 80edf4412..197a77b09 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -16,7 +16,7 @@ from qutebrowser.qt.core import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelI from qutebrowser.qt.widgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit, QLabel, QTreeView, QSizePolicy, QSpacerItem) -from qutebrowser.qt.gui import QFileSystemModel +from qutebrowser.qt.gui import (QFileSystemModel, QAbstractFileIconProvider, QIcon) from qutebrowser.browser import downloads from qutebrowser.config import config, configtypes, configexc, stylesheet @@ -624,6 +624,19 @@ class LineEditPrompt(_BasePrompt): return [('prompt-accept', 'Accept'), ('mode-leave', 'Abort')] +class NullIconProvider(QAbstractFileIconProvider): + + def __init__(self): + super().__init__() + self.null_icon = QIcon() + + def icon(self, type): + return self.null_icon + + def type(self, info): + return "" + + class FilenamePrompt(_BasePrompt): """A prompt for a filename.""" @@ -725,6 +738,8 @@ class FilenamePrompt(_BasePrompt): def _init_fileview(self): self._file_view = QTreeView(self) self._file_model = QFileSystemModel(self) + + 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 From 1df7d261fd54ed73a3de1ded441fa371caeb5e2d Mon Sep 17 00:00:00 2001 From: Florian Stecker Date: Tue, 19 Sep 2023 19:34:27 -0400 Subject: Improve NullIconProvider --- qutebrowser/mainwindow/prompt.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index 197a77b09..aaf283ace 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -626,16 +626,17 @@ class LineEditPrompt(_BasePrompt): class NullIconProvider(QAbstractFileIconProvider): + """Returns empty icon for everything.""" + def __init__(self): super().__init__() self.null_icon = QIcon() - def icon(self, type): + def icon(self, t): return self.null_icon - def type(self, info): - return "" - + def type(self, _info): + return 'unknown' class FilenamePrompt(_BasePrompt): -- cgit v1.2.3-54-g00ecf From 920a18ab15f08370778054feec06a65214d976cc Mon Sep 17 00:00:00 2001 From: Florian Stecker Date: Wed, 20 Sep 2023 16:29:26 -0400 Subject: replace QAbstractFileIconProvider by QFileIconProvider --- qutebrowser/mainwindow/prompt.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index aaf283ace..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, QAbstractFileIconProvider, QIcon) + QSpacerItem, QFileIconProvider) +from qutebrowser.qt.gui import (QFileSystemModel, QIcon) from qutebrowser.browser import downloads from qutebrowser.config import config, configtypes, configexc, stylesheet @@ -624,7 +624,7 @@ class LineEditPrompt(_BasePrompt): return [('prompt-accept', 'Accept'), ('mode-leave', 'Abort')] -class NullIconProvider(QAbstractFileIconProvider): +class NullIconProvider(QFileIconProvider): """Returns empty icon for everything.""" @@ -632,12 +632,13 @@ class NullIconProvider(QAbstractFileIconProvider): super().__init__() self.null_icon = QIcon() - def icon(self, t): + def icon(self, _t): return self.null_icon def type(self, _info): return 'unknown' + class FilenamePrompt(_BasePrompt): """A prompt for a filename.""" @@ -740,7 +741,9 @@ class FilenamePrompt(_BasePrompt): 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