summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarko Kangas <marko.kangas@theqtcompany.com>2015-04-16 16:11:06 +0300
committerMarko Kangas <marko.kangas@theqtcompany.com>2015-04-28 12:46:35 +0000
commit0abf5ec7c4e035f2d37b45cc2da583df829ec0d0 (patch)
treedd6930ea6412102b0b558a48691f3db4bb3f45a6 /src
parentf15d6c3fa910d5200e245fe15ae9932f4b4eca78 (diff)
Add support to set text/uri-list mimedata via setData()
Fixed issue that text/uri-list mimedata got from QMimeData::data() was corrupted after setting it back via QMimeData::setData() Change-Id: I2377523a9286519402ab9127ed7f3fa66e39a679 Task-number: QTBUG-45486 Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qmimedata.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index 0753faf469..3e9cdac966 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -566,7 +566,22 @@ QByteArray QMimeData::data(const QString &mimeType) const
void QMimeData::setData(const QString &mimeType, const QByteArray &data)
{
Q_D(QMimeData);
- d->setData(mimeType, QVariant(data));
+
+ if (mimeType == QLatin1String("text/uri-list")) {
+ QByteArray ba = data;
+ if (ba.endsWith('\0'))
+ ba.chop(1);
+ QList<QByteArray> urls = ba.split('\n');
+ QList<QVariant> list;
+ for (int i = 0; i < urls.size(); ++i) {
+ QByteArray ba = urls.at(i).trimmed();
+ if (!ba.isEmpty())
+ list.append(QUrl::fromEncoded(ba));
+ }
+ d->setData(mimeType, list);
+ } else {
+ d->setData(mimeType, QVariant(data));
+ }
}
/*!