summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2015-02-07 19:29:19 +0200
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2015-02-07 17:48:07 +0000
commitdd69958792021e247da8caa7e9ecd503fd5e2540 (patch)
treedf2e62594b81c1e74ae7df73ec46e9e6ddcf3a4b
parent7fec8a70acf8359d650a89b2eaf207b3a8b25540 (diff)
Fix copying text to non-qt clients
Like we do for pasting, set the mime type of text to "text/plain;charset=utf-8" too besides "text/plain". This allows copying text to clients such as weston example clients or Xwayland. Change-Id: I8a24f32d93e438f16db662e7c09b09ddd7578768 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
-rw-r--r--src/client/qwaylandclipboard.cpp4
-rw-r--r--src/client/qwaylandinputdevice.cpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/client/qwaylandclipboard.cpp b/src/client/qwaylandclipboard.cpp
index c40f023b5..355a7163a 100644
--- a/src/client/qwaylandclipboard.cpp
+++ b/src/client/qwaylandclipboard.cpp
@@ -86,6 +86,10 @@ void QWaylandClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
if (!inputDevice || !inputDevice->dataDevice())
return;
+ static const QString plain = QStringLiteral("text/plain");
+ static const QString utf8 = QStringLiteral("text/plain;charset=utf-8");
+ if (data && data->hasFormat(plain) && !data->hasFormat(utf8))
+ data->setData(utf8, data->data(plain));
inputDevice->dataDevice()->setSelectionSource(data ? new QWaylandDataSource(mDisplay->dndSelectionHandler(), data) : 0);
emitChanged(mode);
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index b2dfd757d..ad369bb32 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -761,6 +761,7 @@ void QWaylandInputDevice::Keyboard::keyboard_key(uint32_t serial, uint32_t time,
QEvent::Type type = isDown ? QEvent::KeyPress : QEvent::KeyRelease;
QString text;
int qtkey = key + 8; // qt-compositor substracts 8 for some reason
+ mParent->mSerial = serial;
if (!window) {
// We destroyed the keyboard focus surface, but the server