diff --git a/autotests/kfileplacesmodeltest.cpp b/autotests/kfileplacesmodeltest.cpp --- a/autotests/kfileplacesmodeltest.cpp +++ b/autotests/kfileplacesmodeltest.cpp @@ -282,7 +282,7 @@ KBookmark bookmark = root.first(); while (!bookmark.isNull()) { QVERIFY(!bookmark.metaDataItem(QStringLiteral("ID")).isEmpty() || !bookmark.metaDataItem(QStringLiteral("UDI")).isEmpty()); - // It's mutualy exclusive though + // It's mutually exclusive though QVERIFY(bookmark.metaDataItem(QStringLiteral("ID")).isEmpty() || bookmark.metaDataItem(QStringLiteral("UDI")).isEmpty()); bookmark = root.next(bookmark); @@ -312,7 +312,14 @@ id = bookmark.metaDataItem(QStringLiteral("ID")); } - QVERIFY2(!ids.contains(id), "Duplicated ID found!"); + if (ids.contains(id)) { + // Some debugging help + qDebug() << "Bookmarks file:" << bookmarksFile() << "contains one (or more) duplicated bookmarks:"; + QFile debugFile(bookmarksFile()); + QVERIFY(debugFile.open(QIODevice::ReadOnly)); + qDebug() << QString::fromUtf8(debugFile.readAll()); + QVERIFY2(!ids.contains(id), qPrintable("Duplicated ID found: " + id)); + } ids << id; bookmark = root.next(bookmark); } diff --git a/src/filewidgets/kfileplacesmodel.cpp b/src/filewidgets/kfileplacesmodel.cpp --- a/src/filewidgets/kfileplacesmodel.cpp +++ b/src/filewidgets/kfileplacesmodel.cpp @@ -657,10 +657,10 @@ QVector devices = availableDevices; while (!bookmark.isNull()) { - if (bookmark.url().isValid()) { - QString udi = bookmark.metaDataItem(QStringLiteral("UDI")); + const QString udi = bookmark.metaDataItem(QStringLiteral("UDI")); + const QUrl url = bookmark.url(); + if (!udi.isEmpty() || url.isValid()) { QString appName = bookmark.metaDataItem(QStringLiteral("OnlyInApp")); - QUrl url = bookmark.url(); auto it = std::find(devices.begin(), devices.end(), udi); bool deviceAvailable = (it != devices.end()); if (deviceAvailable) {