93 lines
2.9 KiB
Diff
93 lines
2.9 KiB
Diff
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;
|
|
}
|
|
|