diff --git a/src/gui/itemviews/qfileiconprovider.cpp b/src/gui/itemviews/qfileiconprovider.cpp index 5dbd1f0..e1c6ee6 100644 --- a/src/gui/itemviews/qfileiconprovider.cpp +++ b/src/gui/itemviews/qfileiconprovider.cpp @@ -322,33 +322,36 @@ QIcon QFileIconProviderPrivate::getWinIcon(const QFileInfo &fileInfo) const QIcon QFileIconProviderPrivate::getMacIcon(const QFileInfo &fi) const { QIcon retIcon; - QString fileExtension = fi.suffix().toUpper(); - fileExtension.prepend(QLatin1String(".")); - - const QString keyBase = QLatin1String("qt_") + fileExtension; + QString keyBase; + { + QString ext = fi.suffix().toUpper(); + if (!ext.isEmpty()) + keyBase = QLatin1String("qt_") + ext; + } QPixmap pixmap; - if (fi.isFile() && !fi.isExecutable() && !fi.isSymLink()) { - QPixmapCache::find(keyBase + QLatin1String("16"), pixmap); - } + if (!keyBase.isEmpty()) { + if (fi.isFile() && !fi.isExecutable() && !fi.isSymLink()) { + QPixmapCache::find(keyBase + QLatin1String("16"), pixmap); + } - if (!pixmap.isNull()) { - retIcon.addPixmap(pixmap); - if (QPixmapCache::find(keyBase + QLatin1String("32"), pixmap)) { + if (!pixmap.isNull()) { retIcon.addPixmap(pixmap); - if (QPixmapCache::find(keyBase + QLatin1String("64"), pixmap)) { + if (QPixmapCache::find(keyBase + QLatin1String("32"), pixmap)) { retIcon.addPixmap(pixmap); - if (QPixmapCache::find(keyBase + QLatin1String("128"), pixmap)) { + if (QPixmapCache::find(keyBase + QLatin1String("64"), pixmap)) { retIcon.addPixmap(pixmap); - return retIcon; + if (QPixmapCache::find(keyBase + QLatin1String("128"), pixmap)) { + retIcon.addPixmap(pixmap); + return retIcon; + } } } } } - FSRef macRef; - OSStatus status = FSPathMakeRef(reinterpret_cast(fi.canonicalFilePath().toUtf8().constData()), + OSStatus status = FSPathMakeRef(reinterpret_cast(fi.filePath().toUtf8().constData()), &macRef, 0); if (status != noErr) return retIcon; @@ -368,13 +371,13 @@ QIcon QFileIconProviderPrivate::getMacIcon(const QFileInfo &fi) const ReleaseIconRef(iconRef); pixmap = retIcon.pixmap(16); - QPixmapCache::insert(keyBase + QLatin1String("16"), pixmap); + if (!keyBase.isEmpty()) QPixmapCache::insert(keyBase + QLatin1String("16"), pixmap); pixmap = retIcon.pixmap(32); - QPixmapCache::insert(keyBase + QLatin1String("32"), pixmap); + if (!keyBase.isEmpty()) QPixmapCache::insert(keyBase + QLatin1String("32"), pixmap); pixmap = retIcon.pixmap(64); - QPixmapCache::insert(keyBase + QLatin1String("64"), pixmap); + if (!keyBase.isEmpty()) QPixmapCache::insert(keyBase + QLatin1String("64"), pixmap); pixmap = retIcon.pixmap(128); - QPixmapCache::insert(keyBase + QLatin1String("128"), pixmap); + if (!keyBase.isEmpty()) QPixmapCache::insert(keyBase + QLatin1String("128"), pixmap); return retIcon; }