diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-01-16 15:05:19 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-02-11 16:27:26 +0000 |
commit | 05c9d6ecddce7bf9b5cc74a2ce6f57fbc9d748fc (patch) | |
tree | 17acd60be857a1baf0ef032a732977bcc110de80 /src/quickwidgets | |
parent | 08bd120f012949199ee0c1d20d42a628af01289e (diff) |
Implement dnd support in QQuickWidget differently
This way subclasses can reimplement functions like dragEnterEvent().
Task-number: QTBUG-43821
Change-Id: I24bd14de8aab5ab741bc36330b4dcf7c83dedbf6
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/quickwidgets')
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 51 | ||||
-rw-r--r-- | src/quickwidgets/qquickwidget.h | 7 |
2 files changed, 43 insertions, 15 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index 6143e4ef0d..d417f020c3 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -1076,21 +1076,6 @@ bool QQuickWidget::event(QEvent *e) Q_D(QQuickWidget); switch (e->type()) { -#ifndef QT_NO_DRAGANDDROP - case QEvent::Drop: - case QEvent::DragMove: - case QEvent::DragLeave: - // Drag/drop events only have local pos, so no need to map, - // but QQuickWindow::event() does not return true - d->offscreenWindow->event(e); - return e->isAccepted(); - case QEvent::DragEnter: - // Don't reject drag events for the entire widget when one - // item rejects the drag enter - d->offscreenWindow->event(e); - e->accept(); - return true; -#endif case QEvent::InputMethod: case QEvent::InputMethodQuery: @@ -1121,6 +1106,42 @@ bool QQuickWidget::event(QEvent *e) return QWidget::event(e); } +#ifndef QT_NO_DRAGANDDROP + +/*! \reimp */ +void QQuickWidget::dragEnterEvent(QDragEnterEvent *e) +{ + Q_D(QQuickWidget); + // Don't reject drag events for the entire widget when one + // item rejects the drag enter + d->offscreenWindow->event(e); + e->accept(); +} + +/*! \reimp */ +void QQuickWidget::dragMoveEvent(QDragMoveEvent *e) +{ + Q_D(QQuickWidget); + // Drag/drop events only have local pos, so no need to map, + // but QQuickWindow::event() does not return true + d->offscreenWindow->event(e); +} + +/*! \reimp */ +void QQuickWidget::dragLeaveEvent(QDragLeaveEvent *e) +{ + Q_D(QQuickWidget); + d->offscreenWindow->event(e); +} + +/*! \reimp */ +void QQuickWidget::dropEvent(QDropEvent *e) +{ + Q_D(QQuickWidget); + d->offscreenWindow->event(e); +} + +#endif // QT_NO_DRAGANDDROP // TODO: try to separate the two cases of // 1. render() unconditionally without sync diff --git a/src/quickwidgets/qquickwidget.h b/src/quickwidgets/qquickwidget.h index 87f688c11a..20b934f0ac 100644 --- a/src/quickwidgets/qquickwidget.h +++ b/src/quickwidgets/qquickwidget.h @@ -126,6 +126,13 @@ protected: virtual void wheelEvent(QWheelEvent *); #endif +#ifndef QT_NO_DRAGANDDROP + virtual void dragEnterEvent(QDragEnterEvent *); + virtual void dragMoveEvent(QDragMoveEvent *); + virtual void dragLeaveEvent(QDragLeaveEvent *); + virtual void dropEvent(QDropEvent *); +#endif + bool event(QEvent *); private: |