diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml index c749eb522c39ee6cf76604ad58ef4ec6b1198c81..f68392daf14f6e126c3cf37606b090f49cb8875c 100644 --- a/src/mainview/components/MessageWebView.qml +++ b/src/mainview/components/MessageWebView.qml @@ -43,6 +43,10 @@ Rectangle { signal messagesCleared signal messagesLoaded + function setSendMessageContent(content) { + jsBridgeObject.setSendMessageContentRequest(content) + } + function focusMessageWebView() { messageWebView.forceActiveFocus() } @@ -140,6 +144,10 @@ Rectangle { // ID, under which this object will be known at chatview.js side. WebChannel.id: "jsbridge" + // signals to trigger functions in chatview.js + // mainly used to avoid input arg string escape + signal setSendMessageContentRequest(string content) + // Functions that are exposed, return code can be derived from js side // by setting callback function. function deleteInteraction(arg) { @@ -240,6 +248,8 @@ Rectangle { settings.javascriptEnabled: true settings.javascriptCanOpenWindows: true + settings.javascriptCanAccessClipboard: true + settings.javascriptCanPaste: true settings.fullScreenSupportEnabled: true settings.allowRunningInsecureContent: true settings.localContentCanAccessRemoteUrls: true diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 819285bd3ce0560ad9d2d864c84d2e1e315917ab..d085f57b67bafb7d2cf7967b18af5218232800ab 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -421,10 +421,11 @@ MessagesAdapter::pasteKeyDetected() } } } else { + // Treat as text content, make chatview.js handle in order to + // avoid string escape problems QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", - Q_ARG(QVariant, - QStringLiteral("replaceText(`%1`)").arg(mimeData->text()))); + Q_ARG(QVariant, QStringLiteral("replaceText()"))); } } @@ -640,8 +641,7 @@ MessagesAdapter::removeInteraction(uint64_t interactionId) void MessagesAdapter::setSendMessageContent(const QString& content) { - QString s = QString::fromLatin1("setSendMessageContent(`%1`);").arg(content); - QMetaObject::invokeMethod(qmlObj_, "webViewRunJavaScript", Q_ARG(QVariant, s)); + QMetaObject::invokeMethod(qmlObj_, "setSendMessageContent", Q_ARG(QVariant, content)); } void