wasm: remove QWasmClipboard::isPaste

QWasmClipboard::setMimeData() was used to move clipboard data for
two different cases:

  1) On programatic QClipboard::setMimeData() call from application
  2) On paste event from the browser

However, we are free to not call it in case 2) above, which means
it can be used to handle programatic setMimeData() exclusively.

Change-Id: I5bb452538027ee8eab36be6e405ae416f350a08e
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: David Skoland <david.skoland@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
This commit is contained in:
Morten Sørvig 2022-09-20 09:09:43 +02:00
parent 69033876c6
commit 87c3d2a3ce
2 changed files with 9 additions and 12 deletions

View File

@ -145,7 +145,6 @@ EMSCRIPTEN_BINDINGS(qtClipboardModule) {
}
QWasmClipboard::QWasmClipboard() :
isPaste(false),
m_isListener(false)
{
val clipboard = val::global("navigator")["clipboard"];
@ -171,16 +170,13 @@ QMimeData *QWasmClipboard::mimeData(QClipboard::Mode mode)
void QWasmClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode)
{
QPlatformClipboard::setMimeData(mimeData, mode);
// handle setText/ setData programmatically
if (!isPaste) {
if (hasClipboardApi) {
writeToClipboardApi();
} else if (!m_isListener) {
writeToClipboard(mimeData);
}
QPlatformClipboard::setMimeData(mimeData, mode);
if (hasClipboardApi) {
writeToClipboardApi();
} else if (!m_isListener) {
writeToClipboard(mimeData);
}
isPaste = false;
}
QWasmClipboard::ProcessKeyboardResult
@ -193,7 +189,7 @@ QWasmClipboard::processKeyboard(const QWasmEventTranslator::TranslatedEvent &eve
if (event.key != Qt::Key_C && event.key != Qt::Key_V && event.key != Qt::Key_X)
return ProcessKeyboardResult::Ignored;
isPaste = event.key == Qt::Key_V;
const bool isPaste = event.key == Qt::Key_V;
return hasClipboardApi && !isPaste
? ProcessKeyboardResult::NativeClipboardEventAndCopiedDataNeeded
@ -213,7 +209,9 @@ bool QWasmClipboard::ownsMode(QClipboard::Mode mode) const
void QWasmClipboard::qWasmClipboardPaste(QMimeData *mData)
{
QWasmIntegration::get()->clipboard()->setMimeData(mData, QClipboard::Clipboard);
// Persist clipboard data so that the app can read it when handling the CTRL+V
QWasmIntegration::get()->clipboard()->
QPlatformClipboard::setMimeData(mData, QClipboard::Clipboard);
QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
0, QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, "V");

View File

@ -42,7 +42,6 @@ public:
bool hasClipboardApi;
void writeToClipboardApi();
void writeToClipboard(const QMimeData *data);
bool isPaste;
bool m_isListener;
};