summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/web_contents_adapter.cpp7
-rw-r--r--src/core/web_contents_adapter.h3
-rw-r--r--src/webengine/api/qquickwebengineview.cpp2
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp2
4 files changed, 8 insertions, 6 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 63cda7fa1..8fe86ddc2 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -1625,15 +1625,16 @@ void WebContentsAdapter::updateDragAction(int action)
d->currentDropAction = static_cast<blink::WebDragOperation>(action);
}
-void WebContentsAdapter::endDragging(const QPointF &clientPos, const QPointF &screenPos)
+void WebContentsAdapter::endDragging(QDropEvent *e, const QPointF &screenPos)
{
Q_D(WebContentsAdapter);
CHECK_INITIALIZED();
content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
rvh->GetWidget()->FilterDropData(d->currentDropData.get());
- d->lastDragClientPos = toGfx(clientPos);
+ d->lastDragClientPos = toGfx(e->posF());
d->lastDragScreenPos = toGfx(screenPos);
- rvh->GetWidget()->DragTargetDrop(*d->currentDropData, d->lastDragClientPos, d->lastDragScreenPos, 0);
+ rvh->GetWidget()->DragTargetDrop(*d->currentDropData, d->lastDragClientPos, d->lastDragScreenPos,
+ toWeb(e->mouseButtons()) | toWeb(e->keyboardModifiers()));
d->currentDropData.reset();
}
diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h
index 111100bba..d5dbcf122 100644
--- a/src/core/web_contents_adapter.h
+++ b/src/core/web_contents_adapter.h
@@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE
class QAccessibleInterface;
class QDragEnterEvent;
class QDragMoveEvent;
+class QDropEvent;
class QMimeData;
class QPageLayout;
class QString;
@@ -188,7 +189,7 @@ public:
void enterDrag(QDragEnterEvent *e, const QPointF &screenPos);
Qt::DropAction updateDragPosition(QDragMoveEvent *e, const QPointF &screenPos);
void updateDragAction(int action);
- void endDragging(const QPointF &clientPos, const QPointF &screenPos);
+ void endDragging(QDropEvent *e, const QPointF &screenPos);
void leaveDrag();
#endif // QT_CONFIG(draganddrop)
void printToPDF(const QPageLayout&, const QString&);
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index babfbd014..86fea67e8 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -1414,7 +1414,7 @@ void QQuickWebEngineView::dropEvent(QDropEvent *e)
{
Q_D(QQuickWebEngineView);
e->accept();
- d->adapter->endDragging(e->pos(), mapToScreen(this, e->pos()));
+ d->adapter->endDragging(e, mapToScreen(this, e->pos()));
}
#endif // QT_CONFIG(draganddrop)
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index f03679d17..f515f0c9f 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -417,7 +417,7 @@ void QWebEngineView::dropEvent(QDropEvent *e)
if (!d->m_dragEntered)
return;
e->accept();
- d->page->d_ptr->adapter->endDragging(e->pos(), mapToGlobal(e->pos()));
+ d->page->d_ptr->adapter->endDragging(e, mapToGlobal(e->pos()));
d->m_dragEntered = false;
}
#endif // QT_CONFIG(draganddrop)