diff options
author | Arnt Witteveen <arntw@enfocus.com> | 2012-03-19 11:23:29 (GMT) |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-19 14:13:43 (GMT) |
commit | c0b782e8c516245bd534542f3682e7e25a33c414 (patch) | |
tree | ad83f3b8213a696302d91baff390e3cf21c66100 | |
parent | 69f84b9514f8f22d27590ac890dbd20aec369702 (diff) | |
download | Qt-c0b782e8c516245bd534542f3682e7e25a33c414.zip Qt-c0b782e8c516245bd534542f3682e7e25a33c414.tar.gz Qt-c0b782e8c516245bd534542f3682e7e25a33c414.tar.bz2 |
Cherry picking qt5 bugfix 437da962c2b486b1a1722aac003bfa00b93ac204 to qt4.
Original description for bugfix:
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: I349526ff017b1a2409e3dcc494b86bb541740790
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | src/gui/itemviews/qfileiconprovider.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/gui/itemviews/qfileiconprovider.cpp b/src/gui/itemviews/qfileiconprovider.cpp index 99100f1..d9446c7 100644 --- a/src/gui/itemviews/qfileiconprovider.cpp +++ b/src/gui/itemviews/qfileiconprovider.cpp @@ -378,14 +378,16 @@ QIcon QFileIconProviderPrivate::getMacIcon(const QFileInfo &fi) const qt_mac_constructQIconFromIconRef(iconRef, 0, &retIcon); ReleaseIconRef(iconRef); - pixmap = retIcon.pixmap(16); - QPixmapCache::insert(keyBase + QLatin1String("16"), pixmap); - pixmap = retIcon.pixmap(32); - QPixmapCache::insert(keyBase + QLatin1String("32"), pixmap); - pixmap = retIcon.pixmap(64); - QPixmapCache::insert(keyBase + QLatin1String("64"), pixmap); - pixmap = retIcon.pixmap(128); - QPixmapCache::insert(keyBase + QLatin1String("128"), pixmap); + if (fi.isFile() && !fi.isExecutable() && !fi.isSymLink()) { + pixmap = retIcon.pixmap(16); + QPixmapCache::insert(keyBase + QLatin1String("16"), pixmap); + pixmap = retIcon.pixmap(32); + QPixmapCache::insert(keyBase + QLatin1String("32"), pixmap); + pixmap = retIcon.pixmap(64); + QPixmapCache::insert(keyBase + QLatin1String("64"), pixmap); + pixmap = retIcon.pixmap(128); + QPixmapCache::insert(keyBase + QLatin1String("128"), pixmap); + } return retIcon; } |