diff options
| author | Lorn Potter <lorn.potter@gmail.com> | 2023-10-19 16:33:25 +1000 |
|---|---|---|
| committer | Lorn Potter <lorn.potter@gmail.com> | 2023-12-22 08:06:08 +1000 |
| commit | 1f7d222cec1e8659d7bfa19ec3c1098a2bc00f35 (patch) | |
| tree | c476f09ec2849c525805b9d6d714fff07b23fee4 /src/plugins/platforms/wasm/qwasmclipboard.cpp | |
| parent | 8cc84a1386b77701ebc9c9d4efbc1b033d0e326b (diff) | |
wasm: write file to storage on drop
Change-Id: Ibd1b5d623da07ad611cce577929a23ba991b6738
Pick-to: 6.7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmclipboard.cpp')
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmclipboard.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/plugins/platforms/wasm/qwasmclipboard.cpp b/src/plugins/platforms/wasm/qwasmclipboard.cpp index 9c7088067eb..786267277af 100644 --- a/src/plugins/platforms/wasm/qwasmclipboard.cpp +++ b/src/plugins/platforms/wasm/qwasmclipboard.cpp @@ -70,16 +70,7 @@ static void qClipboardPasteTo(val event) { event.call<void>("preventDefault"); // prevent browser from handling drop event - static std::shared_ptr<qstdweb::CancellationFlag> readDataCancellation = nullptr; - dom::DataTransfer transfer(event["clipboardData"]); - auto data = transfer.toMimeDataWithFile(); - if (data->formats().isEmpty()) - return; - // Persist clipboard data so that the app can read it when handling the CTRL+V - QWasmIntegration::get()->clipboard()->QPlatformClipboard::setMimeData(data, - QClipboard::Clipboard); - QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyPress, Qt::Key_V, - Qt::ControlModifier, "V"); + QWasmIntegration::get()->getWasmClipboard()->sendClipboardData(event); } EMSCRIPTEN_BINDINGS(qtClipboardModule) { @@ -292,4 +283,22 @@ void QWasmClipboard::writeToClipboard() document.call<val>("execCommand", val("copy")); } +void QWasmClipboard::sendClipboardData(emscripten::val event) +{ + dom::DataTransfer transfer(event["clipboardData"]); + QMimeData *mData; + const auto pointerCallback = std::function([&](QMimeData &data) { + mData = &data; + // 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(0, QEvent::KeyPress, Qt::Key_V, + Qt::ControlModifier, "V"); + QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyRelease, Qt::Key_V, + Qt::ControlModifier, "V"); + }); + + transfer.toMimeDataWithFile(pointerCallback); // mimedata + +} QT_END_NAMESPACE |
