diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-01-21 08:17:21 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-01-21 08:17:21 +0100 |
commit | 158a3a4159bdc5a49caecd63e021dacbc06cf23c (patch) | |
tree | c3ed9aee6cabd46e5e8615b3815b92d32857c4da /src/plugins/platforms/mirclient/qmirclientclipboard.cpp | |
parent | 26ece94a68fb5ae680c5639716b06c4e1ae979a8 (diff) | |
parent | 7b2fb038ae4b8b9231ae989ad309b6eca107a858 (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
src/corelib/io/qiodevice_p.h
src/corelib/kernel/qvariant_p.h
src/corelib/tools/qsimd.cpp
src/gui/kernel/qguiapplication.cpp
tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
Change-Id: I742a093cbb231b282b43e463ec67173e0d29f57a
Diffstat (limited to 'src/plugins/platforms/mirclient/qmirclientclipboard.cpp')
-rw-r--r-- | src/plugins/platforms/mirclient/qmirclientclipboard.cpp | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/src/plugins/platforms/mirclient/qmirclientclipboard.cpp b/src/plugins/platforms/mirclient/qmirclientclipboard.cpp index 4494847b54..4cb2b5f740 100644 --- a/src/plugins/platforms/mirclient/qmirclientclipboard.cpp +++ b/src/plugins/platforms/mirclient/qmirclientclipboard.cpp @@ -87,12 +87,12 @@ void QMirClientClipboard::requestDBusClipboardContents() if (!mPendingGetContentsCall.isNull()) return; - QDBusPendingCall pendingCall = mDBusClipboard->asyncCall("GetContents"); + QDBusPendingCall pendingCall = mDBusClipboard->asyncCall(QStringLiteral("GetContents")); mPendingGetContentsCall = new QDBusPendingCallWatcher(pendingCall, this); - QObject::connect(mPendingGetContentsCall.data(), SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SLOT(onDBusClipboardGetContentsFinished(QDBusPendingCallWatcher*))); + QObject::connect(mPendingGetContentsCall.data(), &QDBusPendingCallWatcher::finished, + this, &QMirClientClipboard::onDBusClipboardGetContentsFinished); } void QMirClientClipboard::onDBusClipboardGetContentsFinished(QDBusPendingCallWatcher* call) @@ -143,17 +143,17 @@ void QMirClientClipboard::setupDBus() QDBusConnection dbusConnection = QDBusConnection::sessionBus(); bool ok = dbusConnection.connect( - "com.canonical.QtMir", - "/com/canonical/QtMir/Clipboard", - "com.canonical.QtMir.Clipboard", - "ContentsChanged", + QStringLiteral("com.canonical.QtMir"), + QStringLiteral("/com/canonical/QtMir/Clipboard"), + QStringLiteral("com.canonical.QtMir.Clipboard"), + QStringLiteral("ContentsChanged"), this, SLOT(updateMimeData(QByteArray))); if (Q_UNLIKELY(!ok)) qCritical("QMirClientClipboard - Failed to connect to ContentsChanged signal form the D-Bus system clipboard."); - mDBusClipboard = new QDBusInterface("com.canonical.QtMir", - "/com/canonical/QtMir/Clipboard", - "com.canonical.QtMir.Clipboard", + mDBusClipboard = new QDBusInterface(QStringLiteral("com.canonical.QtMir"), + QStringLiteral("/com/canonical/QtMir/Clipboard"), + QStringLiteral("com.canonical.QtMir.Clipboard"), dbusConnection); mDBusSetupDone = true; @@ -161,6 +161,8 @@ void QMirClientClipboard::setupDBus() QByteArray QMirClientClipboard::serializeMimeData(QMimeData *mimeData) const { + Q_ASSERT(mimeData != nullptr); + const QStringList formats = mimeData->formats(); const int formatCount = qMin(formats.size(), maxFormatsCount); const int headerSize = sizeof(int) + (formatCount * 4 * sizeof(int)); @@ -179,12 +181,13 @@ QByteArray QMirClientClipboard::serializeMimeData(QMimeData *mimeData) const int offset = headerSize; header[0] = formatCount; for (int i = 0; i < formatCount; i++) { + const QByteArray data = mimeData->data(formats[i]); const int formatOffset = offset; const int formatSize = formats[i].size(); const int dataOffset = offset + formatSize; - const int dataSize = mimeData->data(formats[i]).size(); + const int dataSize = data.size(); memcpy(&buffer[formatOffset], formats[i].toLatin1().data(), formatSize); - memcpy(&buffer[dataOffset], mimeData->data(formats[i]).data(), dataSize); + memcpy(&buffer[dataOffset], data.data(), dataSize); header[i*4+1] = formatOffset; header[i*4+2] = formatSize; header[i*4+3] = dataOffset; @@ -264,13 +267,15 @@ void QMirClientClipboard::setMimeData(QMimeData* mimeData, QClipboard::Mode mode delete mPendingGetContentsCall.data(); } - QByteArray serializedMimeData = serializeMimeData(mimeData); - if (!serializedMimeData.isEmpty()) { - setDBusClipboardContents(serializedMimeData); - } + if (mimeData != nullptr) { + QByteArray serializedMimeData = serializeMimeData(mimeData); + if (!serializedMimeData.isEmpty()) { + setDBusClipboardContents(serializedMimeData); + } - mMimeData = mimeData; - emitChanged(QClipboard::Clipboard); + mMimeData = mimeData; + emitChanged(QClipboard::Clipboard); + } } bool QMirClientClipboard::supportsMode(QClipboard::Mode mode) const @@ -286,6 +291,10 @@ bool QMirClientClipboard::ownsMode(QClipboard::Mode mode) const void QMirClientClipboard::setDBusClipboardContents(const QByteArray &clipboardContents) { + if (!mDBusSetupDone) { + setupDBus(); + } + if (!mPendingSetContentsCall.isNull()) { // Ignore any previous set call as we are going to overwrite it anyway QObject::disconnect(mPendingSetContentsCall.data(), 0, this, 0); @@ -295,10 +304,10 @@ void QMirClientClipboard::setDBusClipboardContents(const QByteArray &clipboardCo delete mPendingSetContentsCall.data(); } - QDBusPendingCall pendingCall = mDBusClipboard->asyncCall("SetContents", clipboardContents); + QDBusPendingCall pendingCall = mDBusClipboard->asyncCall(QStringLiteral("SetContents"), clipboardContents); mPendingSetContentsCall = new QDBusPendingCallWatcher(pendingCall, this); - QObject::connect(mPendingSetContentsCall.data(), SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SLOT(onDBusClipboardSetContentsFinished(QDBusPendingCallWatcher*))); + QObject::connect(mPendingSetContentsCall.data(), &QDBusPendingCallWatcher::finished, + this, &QMirClientClipboard::onDBusClipboardSetContentsFinished); } |