kio/show-custom-folder-icons-sgain.patch

93 lines
2.9 KiB
Diff
Raw Normal View History

From: Emmanuel Pescosta <emmanuelpescosta099@gmail.com>
Date: Tue, 11 Aug 2015 18:13:52 +0000
Subject: Show custom folder icons again
---
Show custom folder icons again
Set mimetype as known when we assign the mime type for inode/directory
This bug was introduced by commit 46cd152f
BUG: 350612
FIXED-IN: 5.14
REVIEW: 124690
---
--- a/autotests/kfileitemtest.cpp
+++ b/autotests/kfileitemtest.cpp
@@ -25,6 +25,8 @@
#include <qtemporarydir.h>
#include <qtemporaryfile.h>
#include <kuser.h>
+#include <kdesktopfile.h>
+#include <kconfiggroup.h>
QTEST_MAIN(KFileItemTest)
@@ -472,6 +474,25 @@
QCOMPARE(fileItem.currentMimeType().name(), udsMimeType);
}
+void KFileItemTest::testIconNameForCustomFolderIcons()
+{
+ // Custom folder icons should be displayed (bug 350612)
+
+ const QString iconName = QStringLiteral("folder-music");
+
+ QTemporaryDir tempDir;
+ const QUrl url = QUrl::fromLocalFile(tempDir.path());
+ KDesktopFile cfg(tempDir.path() + QString::fromLatin1("/.directory"));
+ cfg.desktopGroup().writeEntry("Icon", iconName);
+ cfg.sync();
+
+ KIO::UDSEntry entry;
+ entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
+ KFileItem fileItem(entry, url);
+
+ QCOMPARE(fileItem.iconName(), iconName);
+}
+
#ifndef Q_OS_WIN // user/group/other write permissions are not handled on windows
void KFileItemTest::testIsReadable_data()
--- a/autotests/kfileitemtest.h
+++ b/autotests/kfileitemtest.h
@@ -41,6 +41,7 @@
void testMimetypeForRemoteFolderWithFileType();
void testCurrentMimetypeForRemoteFolder();
void testCurrentMimetypeForRemoteFolderWithFileType();
+ void testIconNameForCustomFolderIcons();
#ifndef Q_OS_WIN
void testIsReadable_data();
--- a/src/core/kfileitem.cpp
+++ b/src/core/kfileitem.cpp
@@ -732,15 +732,15 @@
QMimeDatabase db;
if (isDir()) {
d->m_mimeType = db.mimeTypeForName("inode/directory");
- return d->m_mimeType;
- }
- bool isLocalUrl;
- const QUrl url = mostLocalUrl(&isLocalUrl);
- d->m_mimeType = db.mimeTypeForUrl(url);
- // was: d->m_mimeType = KMimeType::findByUrl( url, d->m_fileMode, isLocalUrl );
- // => we are no longer using d->m_fileMode for remote URLs.
- Q_ASSERT(d->m_mimeType.isValid());
- //qDebug() << d << "finding final mimetype for" << url << ":" << d->m_mimeType.name();
+ } else {
+ bool isLocalUrl;
+ const QUrl url = mostLocalUrl(&isLocalUrl);
+ d->m_mimeType = db.mimeTypeForUrl(url);
+ // was: d->m_mimeType = KMimeType::findByUrl( url, d->m_fileMode, isLocalUrl );
+ // => we are no longer using d->m_fileMode for remote URLs.
+ Q_ASSERT(d->m_mimeType.isValid());
+ //qDebug() << d << "finding final mimetype for" << url << ":" << d->m_mimeType.name();
+ }
d->m_bMimeTypeKnown = true;
}