diff options
Diffstat (limited to 'src/corelib/kernel/qmimedata.cpp')
-rw-r--r-- | src/corelib/kernel/qmimedata.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp index 73307e925a..9a98db21d3 100644 --- a/src/corelib/kernel/qmimedata.cpp +++ b/src/corelib/kernel/qmimedata.cpp @@ -42,13 +42,16 @@ #include "private/qobject_p.h" #include "qurl.h" #include "qstringlist.h" +#if QT_CONFIG(textcodec) #include "qtextcodec.h" +#endif QT_BEGIN_NAMESPACE static inline QString textUriListLiteral() { return QStringLiteral("text/uri-list"); } static inline QString textHtmlLiteral() { return QStringLiteral("text/html"); } static inline QString textPlainLiteral() { return QStringLiteral("text/plain"); } +static inline QString textPlainUtf8Literal() { return QStringLiteral("text/plain;charset=utf-8"); } static inline QString applicationXColorLiteral() { return QStringLiteral("application/x-color"); } static inline QString applicationXQtImageLiteral() { return QStringLiteral("application/x-qt-image"); } @@ -150,7 +153,7 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Ty if (data.type() == QVariant::ByteArray) { // see if we can convert to the requested type switch(type) { -#ifndef QT_NO_TEXTCODEC +#if QT_CONFIG(textcodec) case QVariant::String: { const QByteArray ba = data.toByteArray(); QTextCodec *codec = QTextCodec::codecForName("utf-8"); @@ -158,7 +161,7 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Ty codec = QTextCodec::codecForHtml(ba, codec); return codec->toUnicode(ba); } -#endif // QT_NO_TEXTCODEC +#endif // textcodec case QVariant::Color: { QVariant newData = data; newData.convert(QVariant::Color); @@ -397,6 +400,10 @@ bool QMimeData::hasUrls() const QString QMimeData::text() const { Q_D(const QMimeData); + QVariant utf8Text = d->retrieveTypedData(textPlainUtf8Literal(), QVariant::String); + if (!utf8Text.isNull()) + return utf8Text.toString(); + QVariant data = d->retrieveTypedData(textPlainLiteral(), QVariant::String); return data.toString(); } |