Fix bug showing folder icons for files

Fix an issue where the cache was updated with the folder icon,
even though this is never used from the cache. This caused
files to sometimes be shown with a folder icon: If a folder
has an extension (e.g. a folder named 'folder.ext'), this
means the folder icon will be written to the cache for the
'ext' extension, and from that point on all .ext files will
be shown with the folder icon.

The fix is to not save an icon in the cache for those cases
where it will not be used from the cache anyway, by using the
same condition for updating the cache as for reading it (which
is in line 8 of the same function).

Change-Id: I9ce8fca0718b2b62b9390fa64989acd54952a88e
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
This commit is contained in:
Arnt Witteveen 2012-03-14 14:53:32 +01:00 committed by Qt by Nokia
parent c227546d2e
commit 437da962c2

View File

@ -376,6 +376,7 @@ QIcon QFileIconProviderPrivate::getMacIcon(const QFileInfo &fi) const
qt_mac_constructQIconFromIconRef(iconRef, 0, &retIcon);
ReleaseIconRef(iconRef);
if (fi.isFile() && !fi.isExecutable() && !fi.isSymLink()) {
pixmap = retIcon.pixmap(16);
QPixmapCache::insert(keyBase + QLatin1String("16"), pixmap);
pixmap = retIcon.pixmap(32);
@ -384,7 +385,7 @@ QIcon QFileIconProviderPrivate::getMacIcon(const QFileInfo &fi) const
QPixmapCache::insert(keyBase + QLatin1String("64"), pixmap);
pixmap = retIcon.pixmap(128);
QPixmapCache::insert(keyBase + QLatin1String("128"), pixmap);
}
return retIcon;
}
#endif