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() : QWasmClipboard::QWasmClipboard() :
isPaste(false),
m_isListener(false) m_isListener(false)
{ {
val clipboard = val::global("navigator")["clipboard"]; val clipboard = val::global("navigator")["clipboard"];
@ -171,16 +170,13 @@ QMimeData *QWasmClipboard::mimeData(QClipboard::Mode mode)
void QWasmClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) void QWasmClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode)
{ {
QPlatformClipboard::setMimeData(mimeData, mode);
// handle setText/ setData programmatically // handle setText/ setData programmatically
if (!isPaste) { QPlatformClipboard::setMimeData(mimeData, mode);
if (hasClipboardApi) { if (hasClipboardApi) {
writeToClipboardApi(); writeToClipboardApi();
} else if (!m_isListener) { } else if (!m_isListener) {
writeToClipboard(mimeData); writeToClipboard(mimeData);
}
} }
isPaste = false;
} }
QWasmClipboard::ProcessKeyboardResult 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) if (event.key != Qt::Key_C && event.key != Qt::Key_V && event.key != Qt::Key_X)
return ProcessKeyboardResult::Ignored; return ProcessKeyboardResult::Ignored;
isPaste = event.key == Qt::Key_V; const bool isPaste = event.key == Qt::Key_V;
return hasClipboardApi && !isPaste return hasClipboardApi && !isPaste
? ProcessKeyboardResult::NativeClipboardEventAndCopiedDataNeeded ? ProcessKeyboardResult::NativeClipboardEventAndCopiedDataNeeded
@ -213,7 +209,9 @@ bool QWasmClipboard::ownsMode(QClipboard::Mode mode) const
void QWasmClipboard::qWasmClipboardPaste(QMimeData *mData) 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>( QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
0, QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, "V"); 0, QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier, "V");

View File

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