diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-04-07 11:50:58 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-04-24 23:44:51 +0200 |
commit | f6bd056803e389ef19d699932fe2c3cb23c1e4af (patch) | |
tree | da5707dce6f27f69d09a3345b95906f45ca71b37 /src/plugins | |
parent | 5f013bc10f825f63f33a2b073c5883895e992429 (diff) |
Remove the QTextCodec dependency from the xcb plugin
Change-Id: Ic9f4cec4aa7270b8d9e16c345d060d7d820319d3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbclipboard.cpp | 6 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbdrag.cpp | 6 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbmime.cpp | 22 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbmime.h | 4 |
4 files changed, 15 insertions, 23 deletions
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp index fe9ddfece7..d4a5200a04 100644 --- a/src/plugins/platforms/xcb/qxcbclipboard.cpp +++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp @@ -138,13 +138,13 @@ protected: for (int i = 0; i < size; ++i) atoms.append(targets[i]); - QByteArray encoding; - xcb_atom_t fmtatom = mimeAtomForFormat(m_clipboard->connection(), fmt, requestedType, atoms, &encoding); + bool hasUtf8 = false; + xcb_atom_t fmtatom = mimeAtomForFormat(m_clipboard->connection(), fmt, requestedType, atoms, &hasUtf8); if (fmtatom == 0) return QVariant(); - return mimeConvertToFormat(m_clipboard->connection(), fmtatom, m_clipboard->getDataInFormat(modeAtom, fmtatom), fmt, requestedType, encoding); + return mimeConvertToFormat(m_clipboard->connection(), fmtatom, m_clipboard->getDataInFormat(modeAtom, fmtatom), fmt, requestedType, hasUtf8); } private: diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp index cc735f40a8..ab4acbe727 100644 --- a/src/plugins/platforms/xcb/qxcbdrag.cpp +++ b/src/plugins/platforms/xcb/qxcbdrag.cpp @@ -1362,8 +1362,8 @@ QVariant QXcbDropData::xdndObtainData(const QByteArray &format, QMetaType::Type } QVector<xcb_atom_t> atoms = drag->xdnd_types; - QByteArray encoding; - xcb_atom_t a = mimeAtomForFormat(c, QLatin1String(format), requestedType, atoms, &encoding); + bool hasUtf8 = false; + xcb_atom_t a = mimeAtomForFormat(c, QLatin1String(format), requestedType, atoms, &hasUtf8); if (a == XCB_NONE) return result; @@ -1375,7 +1375,7 @@ QVariant QXcbDropData::xdndObtainData(const QByteArray &format, QMetaType::Type result = c->clipboard()->getSelection(xdnd_selection, a, xdnd_selection, drag->targetTime()); #endif - return mimeConvertToFormat(c, a, result, QLatin1String(format), requestedType, encoding); + return mimeConvertToFormat(c, a, result, QLatin1String(format), requestedType, hasUtf8); } bool QXcbDropData::hasFormat_sys(const QString &format) const diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp index 0b3219f792..0c07d847c2 100644 --- a/src/plugins/platforms/xcb/qxcbmime.cpp +++ b/src/plugins/platforms/xcb/qxcbmime.cpp @@ -159,23 +159,15 @@ QVector<xcb_atom_t> QXcbMime::mimeAtomsForFormat(QXcbConnection *connection, con } QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, const QByteArray &d, const QString &format, - QMetaType::Type requestedType, const QByteArray &encoding) + QMetaType::Type requestedType, bool hasUtf8) { QByteArray data = d; QString atomName = mimeAtomToString(connection, a); // qDebug() << "mimeConvertDataToFormat" << format << atomName << data; - if (!encoding.isEmpty() - && atomName == format + QLatin1String(";charset=") + QLatin1String(encoding)) { - -#if QT_CONFIG(textcodec) - if (requestedType == QMetaType::QString) { - QTextCodec *codec = QTextCodec::codecForName(encoding); - if (codec) - return codec->toUnicode(data); - } -#endif - + if (hasUtf8 && atomName == format + QLatin1String(";charset=utf-8")) { + if (requestedType == QMetaType::QString) + return QString::fromUtf8(data); return data; } @@ -265,9 +257,9 @@ QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, } xcb_atom_t QXcbMime::mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType::Type requestedType, - const QVector<xcb_atom_t> &atoms, QByteArray *requestedEncoding) + const QVector<xcb_atom_t> &atoms, bool *hasUtf8) { - requestedEncoding->clear(); + *hasUtf8 = false; // find matches for string types if (format == QLatin1String("text/plain")) { @@ -306,7 +298,7 @@ xcb_atom_t QXcbMime::mimeAtomForFormat(QXcbConnection *connection, const QString xcb_atom_t a = connection->internAtom(std::move(formatWithCharset).toLatin1()); if (a && atoms.contains(a)) { - *requestedEncoding = "utf-8"; + *hasUtf8 = true; return a; } } diff --git a/src/plugins/platforms/xcb/qxcbmime.h b/src/plugins/platforms/xcb/qxcbmime.h index dcb4f6b6c6..cd6161a08b 100644 --- a/src/plugins/platforms/xcb/qxcbmime.h +++ b/src/plugins/platforms/xcb/qxcbmime.h @@ -60,9 +60,9 @@ public: static bool mimeDataForAtom(QXcbConnection *connection, xcb_atom_t a, QMimeData *mimeData, QByteArray *data, xcb_atom_t *atomFormat, int *dataFormat); static QVariant mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, const QByteArray &data, const QString &format, - QMetaType::Type requestedType, const QByteArray &encoding); + QMetaType::Type requestedType, bool hasUtf8); static xcb_atom_t mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType::Type requestedType, - const QVector<xcb_atom_t> &atoms, QByteArray *requestedEncoding); + const QVector<xcb_atom_t> &atoms, bool *hasUtf8); }; QT_END_NAMESPACE |