@@ -28,6 +28,7 @@
2828
2929// Qt
3030#include <QUrl>
31+#include <QUrlQuery>
3132#include <QDebug>
3233#include <QtGui/QDesktopServices>
3334#include <QQmlEngine>
@@ -206,11 +207,16 @@ void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVaria
206207 QVariant real_metadata(metadata);
207208 // handle overridden results, since QML doesn't support defining maps
208209 if (metadata.type() == QVariant::String) {
209− QString metadata_uri(metadata.toString());
210− if (metadata_uri.startsWith(QLatin1String("subscope:"))) {
211− QString subscope_uri(metadata_uri.mid(9));
212− QStringList parts(subscope_uri.split(QChar('/')));
210+ QUrl metadata_url(metadata.toString());
211+ if (metadata_url.scheme() == QLatin1String("subscope")) {
212+ QString subscope_uri(metadata_url.toString(QUrl::RemoveScheme | QUrl::RemoveQuery));
213213 QVariantHash new_metadata;
214+ QUrlQuery query(metadata_url.query());
215+ QList<QPair<QString,QString>> queryItems(query.queryItems());
216+ for (auto it = queryItems.begin(); it != queryItems.end(); ++it) {
217+ new_metadata[it->first] = QVariant::fromValue(it->second);
218+ }
219+ QStringList parts(subscope_uri.split(QChar('/')));
214220 for (int i = parts.size() - 1; i >= 0; i--) {
215221 QVariantHash inner;
216222 inner["scope-id"] = QVariant::fromValue(parts[i]);
@@ -220,6 +226,7 @@ void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVaria
220226 real_metadata = QVariant::fromValue(new_metadata);
221227 }
222228 }
229+
223230 auto res = createLocalResult(uri, icon_hint, category, result_type, mimetype, title, comment, dnd_uri, real_metadata);
224231 m_previewCancellable.Renew();
225232