diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-24 20:41:44 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-25 12:40:13 +0000 |
commit | 381a2cf4a5a65f446b41240e8a6e6a6356988cb2 (patch) | |
tree | 0c653a2c1f8ef7b95b16a0060693154fd0997a9d /src/quicktemplates2/qquickdrawer.cpp | |
parent | 039c25daac5ec6b96c0aa074eae2a983a1b5aabd (diff) |
QQuickPopup: tryClose() via handlePress() & handleRelease()
This is a preparation step to make Drawer compatible with touch events.
It will eventually override handlePress/Move/Release() to deal with
both touch and mouse input.
Change-Id: I8ae21f6909ca51f86f19dbe68a3e820e9af676ab
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickdrawer.cpp')
-rw-r--r-- | src/quicktemplates2/qquickdrawer.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp index b5b4100d..d8397e92 100644 --- a/src/quicktemplates2/qquickdrawer.cpp +++ b/src/quicktemplates2/qquickdrawer.cpp @@ -395,6 +395,8 @@ bool QQuickDrawerPrivate::ungrabMouse(QMouseEvent *event) bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event) { + handlePress(item->mapToScene(event->localPos())); + offset = 0; pressPoint = event->windowPos(); velocityCalculator.startMeasuring(pressPoint, event->timestamp()); @@ -410,7 +412,7 @@ bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *e bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event) { Q_Q(QQuickDrawer); - Q_UNUSED(item); + handleMove(item->mapToScene(event->localPos())); // Don't react to synthesized mouse move events at INF,INF coordinates. // QQuickWindowPrivate::translateTouchToMouse() uses them to clear hover @@ -446,9 +448,9 @@ bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *ev bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event) { - Q_UNUSED(item); - const bool wasGrabbed = ungrabMouse(event); + if (!wasGrabbed) + handleRelease(item->mapToScene(event->localPos())); popupItem->setKeepMouseGrab(false); pressPoint = QPoint(); @@ -651,21 +653,18 @@ bool QQuickDrawer::childMouseEventFilter(QQuickItem *child, QEvent *event) void QQuickDrawer::mousePressEvent(QMouseEvent *event) { Q_D(QQuickDrawer); - QQuickPopup::mousePressEvent(event); d->handleMousePressEvent(d->popupItem, event); } void QQuickDrawer::mouseMoveEvent(QMouseEvent *event) { Q_D(QQuickDrawer); - QQuickPopup::mouseMoveEvent(event); d->handleMouseMoveEvent(d->popupItem, event); } void QQuickDrawer::mouseReleaseEvent(QMouseEvent *event) { Q_D(QQuickDrawer); - QQuickPopup::mouseReleaseEvent(event); d->handleMouseReleaseEvent(d->popupItem, event); } @@ -690,12 +689,10 @@ bool QQuickDrawer::overlayEvent(QQuickItem *item, QEvent *event) return false; case QEvent::MouseButtonPress: - d->tryClose(item, event); return d->handleMousePressEvent(item, static_cast<QMouseEvent *>(event)); case QEvent::MouseMove: return d->handleMouseMoveEvent(item, static_cast<QMouseEvent *>(event)); case QEvent::MouseButtonRelease: - d->tryClose(item, event); return d->handleMouseReleaseEvent(item, static_cast<QMouseEvent *>(event)); default: return QQuickPopup::overlayEvent(item, event); |