diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-16 11:05:38 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-16 11:05:38 +0100 |
commit | 2d0c80018e6da8193a6c5bd5d764da509e16ab46 (patch) | |
tree | e6ffaf8ec73f6cade2d5fbd17b3ba6d27c790a77 /src/client/qwaylanddataoffer.cpp | |
parent | e6805407b62c9c57bac488813f77ee5cca71868e (diff) | |
parent | 8458e06b25c07ebc8cf6b210fc1ea4cc9aeb42eb (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/client/qwaylanddataoffer.cpp
src/client/qwaylanddisplay.cpp
src/client/qwaylandinputdevice.cpp
src/client/qwaylandwindow.cpp
src/compositor/compositor_api/qwaylandsurfaceitem.cpp
Change-Id: I2eae0fd43a71fbfd7c907ca715707a26f3c134c5
Diffstat (limited to 'src/client/qwaylanddataoffer.cpp')
-rw-r--r-- | src/client/qwaylanddataoffer.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp index 10bf2f1e1..7b69ce6ce 100644 --- a/src/client/qwaylanddataoffer.cpp +++ b/src/client/qwaylanddataoffer.cpp @@ -53,6 +53,11 @@ QT_BEGIN_NAMESPACE namespace QtWaylandClient { +static QString utf8Text() +{ + return QStringLiteral("text/plain;charset=utf-8"); +} + QWaylandDataOffer::QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer) : QtWayland::wl_data_offer(offer) , m_mimeData(new QWaylandMimeData(this, display)) @@ -102,7 +107,13 @@ void QWaylandMimeData::appendFormat(const QString &mimeType) bool QWaylandMimeData::hasFormat_sys(const QString &mimeType) const { - return m_types.contains(mimeType); + if (m_types.contains(mimeType)) + return true; + + if (mimeType == QStringLiteral("text/plain") && m_types.contains(utf8Text())) + return true; + + return false; } QStringList QWaylandMimeData::formats_sys() const @@ -117,8 +128,14 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T if (m_data.contains(mimeType)) return m_data.value(mimeType); - if (!m_types.contains(mimeType)) - return QVariant(); + QString mime = mimeType; + + if (!m_types.contains(mimeType)) { + if (mimeType == QStringLiteral("text/plain") && m_types.contains(utf8Text())) + mime = utf8Text(); + else + return QVariant(); + } int pipefd[2]; if (::pipe2(pipefd, O_CLOEXEC|O_NONBLOCK) == -1) { @@ -126,7 +143,7 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T return QVariant(); } - m_dataOffer->receive(mimeType, pipefd[1]); + m_dataOffer->receive(mime, pipefd[1]); m_display->flushRequests(); close(pipefd[1]); |