diff options
Diffstat (limited to 'src/quick/items/qquickdrag.cpp')
| -rw-r--r-- | src/quick/items/qquickdrag.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/quick/items/qquickdrag.cpp b/src/quick/items/qquickdrag.cpp index ebc1f33cde..66718b42ed 100644 --- a/src/quick/items/qquickdrag.cpp +++ b/src/quick/items/qquickdrag.cpp @@ -686,11 +686,18 @@ QMimeData *QQuickDragAttachedPrivate::createMimeData() const } else if (mimeType == u"text/html"_s) { mimeData->setHtml(text); } else if (mimeType == u"text/uri-list"_s) { - const QUrl url(text); - if (url.isValid()) - mimeData->setUrls({url}); - else - qmlWarning(q) << text << " is not a valid URI"; + QList<QUrl> urls; + // parse and split according to RFC2483 + const auto lines = text.split(u"\r\n"_s, Qt::SkipEmptyParts); + for (const auto &line : lines) { + const QUrl url(line); + if (url.isValid()) + urls.push_back(url); + else + qmlWarning(q) << line << " is not a valid URI"; + + } + mimeData->setUrls(urls); } else if (mimeType.startsWith(u"text/"_s)) { if (qsizetype charsetIdx = mimeType.lastIndexOf(u";charset="_s); charsetIdx != -1) { charsetIdx += sizeof(";charset=") - 1; |
