diff options
author | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2015-12-16 12:38:16 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2016-01-03 09:15:41 +0000 |
commit | 423f7ab80f814c5f4e4784e70bd3c36c44497314 (patch) | |
tree | 7c58a8795956c2542fb2d6947146c2575757f725 /src/webenginewidgets/api/qwebengineview.cpp | |
parent | caf813a167c8a31739e7ae192a4c4921607e3ead (diff) | |
download | qtwebengine-423f7ab80f814c5f4e4784e70bd3c36c44497314.tar.gz |
Implement drag and drop support
Create a QDrag for drag and drop operations that are started in the web
page. React on drag and drop event of QWidget and QQuickItem.
Task-number: QTBUG-43008
Change-Id: If09f09de6e6d5b5f02835985a17cc6bc3262f411
Reviewed-by: Alexandru Croitor <alexandru.croitor@theqtcompany.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineview.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 362849732..e066f2d0e 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -122,6 +122,7 @@ QWebEngineView::QWebEngineView(QWidget *parent) { Q_D(QWebEngineView); d->q_ptr = this; + setAcceptDrops(true); // This causes the child RenderWidgetHostViewQtDelegateWidgets to fill this widget. setLayout(new QStackedLayout); @@ -312,6 +313,40 @@ void QWebEngineView::hideEvent(QHideEvent *event) page()->d_ptr->wasHidden(); } +void QWebEngineView::dragEnterEvent(QDragEnterEvent *e) +{ + Q_D(QWebEngineView); + e->accept(); + d->page->d_ptr->adapter->enterDrag(e, mapToGlobal(e->pos())); +} + +void QWebEngineView::dragLeaveEvent(QDragLeaveEvent *e) +{ + Q_D(QWebEngineView); + e->accept(); + d->page->d_ptr->adapter->leaveDrag(); +} + +void QWebEngineView::dragMoveEvent(QDragMoveEvent *e) +{ + Q_D(QWebEngineView); + QtWebEngineCore::WebContentsAdapter *adapter = d->page->d_ptr->adapter.data(); + Qt::DropAction dropAction = adapter->updateDragPosition(e, mapToGlobal(e->pos())); + if (Qt::IgnoreAction == dropAction) { + e->ignore(); + } else { + e->setDropAction(dropAction); + e->accept(); + } +} + +void QWebEngineView::dropEvent(QDropEvent *e) +{ + Q_D(QWebEngineView); + e->accept(); + d->page->d_ptr->adapter->endDragging(e->pos(), mapToGlobal(e->pos())); +} + #ifndef QT_NO_ACCESSIBILITY int QWebEngineViewAccessible::childCount() const { |