diff options
| author | Even Oscar Andersen <even.oscar.andersen@qt.io> | 2025-12-03 06:09:36 +0100 |
|---|---|---|
| committer | Even Oscar Andersen <even.oscar.andersen@qt.io> | 2025-12-04 14:29:19 +0100 |
| commit | ba5f7153a0e0d4aa9ebaa52f5c4507e5da974bf5 (patch) | |
| tree | 0ca321ddc60735e3e540c703232eba0b24c9b9ec /src/plugins/platforms/wasm/qwasmdrag.cpp | |
| parent | fe298562cfa334dfc38d77284b543da05bec3c70 (diff) | |
wasm: enable drag&drop between browsers
works firefox -> firefox, and chrome -> chrome,
but not firefox <-> chrome
Change-Id: I9495e4775eb581e5732f27bce967416c069c601a
Reviewed-by: Lorn Potter <lorn.potter@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmdrag.cpp')
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmdrag.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/platforms/wasm/qwasmdrag.cpp b/src/plugins/platforms/wasm/qwasmdrag.cpp index 1eed2acde53..ecd95f5e338 100644 --- a/src/plugins/platforms/wasm/qwasmdrag.cpp +++ b/src/plugins/platforms/wasm/qwasmdrag.cpp @@ -17,6 +17,7 @@ #include <QFile> #include <private/qshapedpixmapdndwindow_p.h> +#include <private/qdnd_p.h> #include <functional> #include <string> @@ -198,10 +199,28 @@ void QWasmDrag::onNativeDragFinished(DragEvent *event) m_dragState->quitEventLoopClosure(); } +void QWasmDrag::onNativeDragEnter(DragEvent *event) +{ + event->webEvent.call<void>("preventDefault"); + + // Already dragging + if (QDragManager::self() && QDragManager::self()->object()) + return; + + // Event coming from external browser, start a drag + if (m_dragState) + m_dragState->dropAction = event->dropAction; + + QDrag *drag = new QDrag(this); + drag->setMimeData(new QMimeData()); + drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction); +} + void QWasmDrag::onNativeDragLeave(DragEvent *event) { event->webEvent.call<void>("preventDefault"); - m_dragState->dropAction = event->dropAction; + if (m_dragState) + m_dragState->dropAction = event->dropAction; event->dataTransfer.setDropAction(Qt::DropAction::IgnoreAction); } |
