summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylanddataoffer.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-02-16 11:05:38 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-02-16 11:05:38 +0100
commit2d0c80018e6da8193a6c5bd5d764da509e16ab46 (patch)
treee6ffaf8ec73f6cade2d5fbd17b3ba6d27c790a77 /src/client/qwaylanddataoffer.cpp
parente6805407b62c9c57bac488813f77ee5cca71868e (diff)
parent8458e06b25c07ebc8cf6b210fc1ea4cc9aeb42eb (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.cpp25
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]);