summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmdrag.cpp
diff options
context:
space:
mode:
authorEven Oscar Andersen <even.oscar.andersen@qt.io>2025-12-03 06:09:36 +0100
committerEven Oscar Andersen <even.oscar.andersen@qt.io>2025-12-04 14:29:19 +0100
commitba5f7153a0e0d4aa9ebaa52f5c4507e5da974bf5 (patch)
tree0ca321ddc60735e3e540c703232eba0b24c9b9ec /src/plugins/platforms/wasm/qwasmdrag.cpp
parentfe298562cfa334dfc38d77284b543da05bec3c70 (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.cpp21
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);
}