From a59b9b1f77ff84608b3325d770b6527a6fcffd5d Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Tue, 2 Jul 2019 12:00:20 -0400 Subject: [PATCH] messagewebview: detect paste(ctrl + v) key press event in textarea Change-Id: I4d4dbdebe0eb316b1eea1f576e5dae4867008659 --- callwidget.cpp | 3 +++ messagewebview.cpp | 11 +++++++++++ messagewebview.h | 2 ++ web/chatview.js | 5 +++++ 4 files changed, 21 insertions(+) diff --git a/callwidget.cpp b/callwidget.cpp index 14cf72a..91857cc 100644 --- a/callwidget.cpp +++ b/callwidget.cpp @@ -205,6 +205,9 @@ CallWidget::CallWidget(QWidget* parent) : connect(ui->messageView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowContextMenu(const QPoint&))); + connect(ui->messageView, &MessageWebView::pasteKeyDetected, + this, &CallWidget::Paste); + // set first view to welcome view ui->stackedWidget->setCurrentWidget(ui->welcomePage); ui->btnConversations->setChecked(true); diff --git a/messagewebview.cpp b/messagewebview.cpp index 111d35d..fc61e38 100644 --- a/messagewebview.cpp +++ b/messagewebview.cpp @@ -621,3 +621,14 @@ PrivateBridging::blockConversation() } return 0; } + +Q_INVOKABLE int +PrivateBridging::emitPasteKeyDetected() +{ + if (auto messageView = qobject_cast<MessageWebView*>(this->parent())) { + emit messageView->pasteKeyDetected(); + } else { + qDebug() << "JS bridging - exception during emitPasteKeyDetected"; + } + return 0; +} diff --git a/messagewebview.h b/messagewebview.h index ed27dee..ffa5f35 100644 --- a/messagewebview.h +++ b/messagewebview.h @@ -48,6 +48,7 @@ public: Q_INVOKABLE int blockConversation(); Q_INVOKABLE int emitMessagesCleared(); Q_INVOKABLE int emitMessagesLoaded(); + Q_INVOKABLE int emitPasteKeyDetected(); }; class MessageWebView : public QWebEngineView @@ -101,6 +102,7 @@ signals: void messagesCleared(); void messagesLoaded(); void textSelectedReady(); + void pasteKeyDetected(); private slots: void slotLoadFinished(); diff --git a/web/chatview.js b/web/chatview.js index f923e21..7fbea30 100644 --- a/web/chatview.js +++ b/web/chatview.js @@ -34,6 +34,7 @@ var messages = document.getElementById("messages") var backToBottomBtn = document.getElementById("back_to_bottom_button") var sendContainer = document.getElementById("file_image_send_container") +messageBarInput.onpaste = pasteKeyDetected; /* States: allows us to avoid re-doing something if it isn't meaningful */ var displayLinksEnabled = true @@ -1755,3 +1756,7 @@ function remove(e) { sendContainer.style.visibility = "hidden"; } } + +function pasteKeyDetected() { + window.jsbridge.emitPasteKeyDetected(); +} -- GitLab