From 136bf6d507d7aa84f1aa97ad22b56d574581e227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Wed, 11 Jul 2018 16:41:18 +0200 Subject: Forward mouse and keyboard modifiers from QDropEvent Task-number: QTBUG-69231 Change-Id: I35b503dae7e2d90b26b6e61a4c7c260e45df2b62 Reviewed-by: Filipe Azevedo Reviewed-by: Kai Koehne --- src/core/web_contents_adapter.cpp | 7 ++++--- src/core/web_contents_adapter.h | 3 ++- src/webengine/api/qquickwebengineview.cpp | 2 +- src/webenginewidgets/api/qwebengineview.cpp | 2 +- 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(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) -- cgit v1.2.3