summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-04-07 11:50:58 +0200
committerLars Knoll <lars.knoll@qt.io>2020-04-24 23:44:51 +0200
commitf6bd056803e389ef19d699932fe2c3cb23c1e4af (patch)
treeda5707dce6f27f69d09a3345b95906f45ca71b37 /src/plugins/platforms/xcb
parent5f013bc10f825f63f33a2b073c5883895e992429 (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/platforms/xcb')
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.cpp6
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp6
-rw-r--r--src/plugins/platforms/xcb/qxcbmime.cpp22
-rw-r--r--src/plugins/platforms/xcb/qxcbmime.h4
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