diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2024-01-04 21:02:45 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2024-02-01 22:06:12 +0000 |
commit | 2a8b27bf6c523de6f3f466f8062279c093940a60 (patch) | |
tree | 2b0093f8d11b3ef560daca57fd6fcfffc789409c /src/widgets/dialogs | |
parent | 0211dfd92bcaa5a3a4c1ce94e13fcfd9c49e9c6d (diff) |
QFileSystemModel: don't crash with setIconProvider(nullptr)
The method takes a pointer, so the code shouldn't crash when passed a
nullptr.
QFileInfoGatherer::getInfo() still needs to generate a descriptive
string for the file, so we refactor QAbstractFileIconProvider::type()
to put the implementation into a reusable static function
QAbstractFileIconProviderPrivate::getFileType(const QFileInfo &info).
This unfortunately involves constructing a QMimeDatabase on the fly,
but the docs say that is fine.
Drive-by change: use nullptr instead of `0` for pointers.
Pick-to: 6.5 6.6 6.7
Fixes: QTBUG-99178
Change-Id: Ia32ea0a26701d593e74fbecced7be8d9e0aa0f52
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/qsidebar.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp index 9f6b329a6f..479f5f817d 100644 --- a/src/widgets/dialogs/qsidebar.cpp +++ b/src/widgets/dialogs/qsidebar.cpp @@ -183,11 +183,14 @@ void QUrlModel::setUrl(const QModelIndex &index, const QUrl &url, const QModelIn setData(index, true, EnabledRole); } + // newIcon could be null if fileSystemModel->iconProvider() returns null + if (!newIcon.isNull()) { // Make sure that we have at least 32x32 images - const QSize size = newIcon.actualSize(QSize(32,32)); - if (size.width() < 32) { - QPixmap smallPixmap = newIcon.pixmap(QSize(32, 32)); - newIcon.addPixmap(smallPixmap.scaledToWidth(32, Qt::SmoothTransformation)); + const QSize size = newIcon.actualSize(QSize(32,32)); + if (size.width() < 32) { + QPixmap smallPixmap = newIcon.pixmap(QSize(32, 32)); + newIcon.addPixmap(smallPixmap.scaledToWidth(32, Qt::SmoothTransformation)); + } } if (index.data().toString() != newName) |