Fix pasting from sources advertising the utf8 charset
Some clients use "text/plain;charset=utf8" as the mimetype for the clipboard instead of just "text/plain". Since we support Utf8 accept it as a valid type. Change-Id: Icd540f0ff507ed9917b374f3b40fbdc259ce9ee2 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
This commit is contained in:
parent
322bc6a377
commit
5d36ed33c7
@ -51,6 +51,11 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
static QString utf8Text()
|
||||||
|
{
|
||||||
|
return QStringLiteral("text/plain;charset=utf-8");
|
||||||
|
}
|
||||||
|
|
||||||
QWaylandDataOffer::QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer)
|
QWaylandDataOffer::QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer)
|
||||||
: QtWayland::wl_data_offer(offer)
|
: QtWayland::wl_data_offer(offer)
|
||||||
, m_mimeData(new QWaylandMimeData(this, display))
|
, m_mimeData(new QWaylandMimeData(this, display))
|
||||||
@ -100,7 +105,13 @@ void QWaylandMimeData::appendFormat(const QString &mimeType)
|
|||||||
|
|
||||||
bool QWaylandMimeData::hasFormat_sys(const QString &mimeType) const
|
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
|
QStringList QWaylandMimeData::formats_sys() const
|
||||||
@ -115,8 +126,14 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
|
|||||||
if (m_data.contains(mimeType))
|
if (m_data.contains(mimeType))
|
||||||
return m_data.value(mimeType);
|
return m_data.value(mimeType);
|
||||||
|
|
||||||
if (!m_types.contains(mimeType))
|
QString mime = mimeType;
|
||||||
|
|
||||||
|
if (!m_types.contains(mimeType)) {
|
||||||
|
if (mimeType == QStringLiteral("text/plain") && m_types.contains(utf8Text()))
|
||||||
|
mime = utf8Text();
|
||||||
|
else
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
int pipefd[2];
|
int pipefd[2];
|
||||||
if (::pipe2(pipefd, O_CLOEXEC|O_NONBLOCK) == -1) {
|
if (::pipe2(pipefd, O_CLOEXEC|O_NONBLOCK) == -1) {
|
||||||
@ -124,7 +141,7 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_dataOffer->receive(mimeType, pipefd[1]);
|
m_dataOffer->receive(mime, pipefd[1]);
|
||||||
m_display->flushRequests();
|
m_display->flushRequests();
|
||||||
|
|
||||||
close(pipefd[1]);
|
close(pipefd[1]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user