From d328dd6ac7250c4453ff2dc5d8c9c13ac3b236bc Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Tue, 7 Nov 2017 13:47:01 +0300 Subject: Fix the result of KDesktopFile::sortOrder() Summary: KDesktopFile::sortOrder() returns the value of SortOrder key as a string whithout parsing it as a list. But according to Desktop Entry Specification https://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html it's type is "string(s)", i.e. the same type as the type of Actions and MimeType keys, and thus it should be read the same way. Reviewers: #frameworks, dfaure Reviewed By: dfaure Subscribers: dfaure, #frameworks Tags: #frameworks Differential Revision: https://phabricator.kde.org/D8689 --- autotests/kdesktopfiletest.cpp | 19 +++++++++++++++++++ autotests/kdesktopfiletest.h | 1 + src/core/kdesktopfile.cpp | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/autotests/kdesktopfiletest.cpp b/autotests/kdesktopfiletest.cpp index 66fc8827..d0a0a262 100644 --- a/autotests/kdesktopfiletest.cpp +++ b/autotests/kdesktopfiletest.cpp @@ -62,6 +62,25 @@ void KDesktopFileTest::testRead() QCOMPARE(df.fileName(), QFileInfo(fileName).canonicalFilePath()); } +void KDesktopFileTest::testReadDirectory() +{ + QTemporaryFile file("testReadDirectoryXXXXXX.directory"); + QVERIFY(file.open()); + const QString fileName = file.fileName(); + QTextStream ts(&file); + ts << + "[Desktop Entry]\n" + "Type=Directory\n" + "SortOrder=2.desktop;1.desktop;\n" + "\n"; + file.close(); + QVERIFY(QFile::exists(fileName)); + KDesktopFile df(fileName); + QCOMPARE(df.readType(), QString::fromLatin1("Directory")); + QCOMPARE(df.sortOrder(), QStringList() << QString::fromLatin1("2.desktop") + << QString::fromLatin1("1.desktop")); +} + void KDesktopFileTest::testReadLocalized_data() { QTest::addColumn("locale"); diff --git a/autotests/kdesktopfiletest.h b/autotests/kdesktopfiletest.h index ed6679a2..f63edd0d 100644 --- a/autotests/kdesktopfiletest.h +++ b/autotests/kdesktopfiletest.h @@ -27,6 +27,7 @@ class KDesktopFileTest : public QObject private Q_SLOTS: void initTestCase(); void testRead(); + void testReadDirectory(); void testReadLocalized_data(); void testReadLocalized(); void testUnsuccessfulTryExec(); diff --git a/src/core/kdesktopfile.cpp b/src/core/kdesktopfile.cpp index 52a97ec7..8d53ece4 100644 --- a/src/core/kdesktopfile.cpp +++ b/src/core/kdesktopfile.cpp @@ -330,7 +330,7 @@ QStringList KDesktopFile::sortOrder() const { Q_D(const KDesktopFile); - return d->desktopGroup.readEntry("SortOrder", QStringList()); + return d->desktopGroup.readXdgListEntry("SortOrder"); } //void KDesktopFile::virtual_hook( int id, void* data ) -- cgit v1.2.1