diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-09-04 14:38:20 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-09-06 11:41:29 +0000 |
commit | 61c85fdf580742ba174960400e806c057d0a6bd1 (patch) | |
tree | 3688664365bc3bd12f234bd6a399cd805e5f893f /src | |
parent | 1d3233e9737b494787941ceefad361fb39488f05 (diff) |
QQuickDrawerPrivate::ungrabMouse()
Split ungrabMouse() out of handleMouseReleaseEvent(). This makes the mouse
release handling code a bit easier to read.
Change-Id: Ibc1286083edb4f832b6e5ee761ee5c16a0e68ba1
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickdrawer.cpp | 102 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdrawer_p_p.h | 1 |
2 files changed, 56 insertions, 47 deletions
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp index b2f9f519..551352de 100644 --- a/src/quicktemplates2/qquickdrawer.cpp +++ b/src/quicktemplates2/qquickdrawer.cpp @@ -225,55 +225,10 @@ bool QQuickDrawerPrivate::grabMouse(QMouseEvent *event) return overThreshold; } -bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event) -{ - pressPoint = event->windowPos(); - offset = 0; - - if (qFuzzyIsNull(position)) { - // only accept pressing at drag margins when fully closed - event->setAccepted(startDrag(item->window(), event)); - } else { - if (modal) - event->setAccepted(item->isAncestorOf(popupItem)); - else - event->setAccepted(false); - } - - velocityCalculator.startMeasuring(pressPoint, event->timestamp()); - - return event->isAccepted(); -} - -bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event) -{ - Q_Q(QQuickDrawer); - Q_UNUSED(item); - - const QPointF movePoint = event->windowPos(); - - if (grabMouse(event)) { - QQuickItem *grabber = window->mouseGrabberItem(); - if (!grabber || !grabber->keepMouseGrab()) { - popupItem->grabMouse(); - popupItem->setKeepMouseGrab(true); - offset = qMin<qreal>(0.0, positionAt(movePoint) - position); - } - } - - if (popupItem->keepMouseGrab()) - q->setPosition(positionAt(movePoint) - offset); - event->accept(); - - return popupItem->keepMouseGrab(); -} - static const qreal openCloseVelocityThreshold = 300; -bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event) +bool QQuickDrawerPrivate::ungrabMouse(QMouseEvent *event) { - Q_UNUSED(item); - bool wasGrabbed = popupItem->keepMouseGrab(); if (wasGrabbed) { const QPointF releasePoint = event->windowPos(); @@ -328,10 +283,63 @@ bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent break; } } - popupItem->setKeepMouseGrab(false); } + return wasGrabbed; +} + +bool QQuickDrawerPrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event) +{ + pressPoint = event->windowPos(); + offset = 0; + + if (qFuzzyIsNull(position)) { + // only accept pressing at drag margins when fully closed + event->setAccepted(startDrag(item->window(), event)); + } else { + if (modal) + event->setAccepted(item->isAncestorOf(popupItem)); + else + event->setAccepted(false); + } + + velocityCalculator.startMeasuring(pressPoint, event->timestamp()); + + return event->isAccepted(); +} + +bool QQuickDrawerPrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event) +{ + Q_Q(QQuickDrawer); + Q_UNUSED(item); + + const QPointF movePoint = event->windowPos(); + + if (grabMouse(event)) { + QQuickItem *grabber = window->mouseGrabberItem(); + if (!grabber || !grabber->keepMouseGrab()) { + popupItem->grabMouse(); + popupItem->setKeepMouseGrab(true); + offset = qMin<qreal>(0.0, positionAt(movePoint) - position); + } + } + + if (popupItem->keepMouseGrab()) + q->setPosition(positionAt(movePoint) - offset); + event->accept(); + + return popupItem->keepMouseGrab(); +} + +bool QQuickDrawerPrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event) +{ + Q_UNUSED(item); + + const bool wasGrabbed = ungrabMouse(event); + + popupItem->setKeepMouseGrab(false); pressPoint = QPoint(); event->accept(); + return wasGrabbed; } diff --git a/src/quicktemplates2/qquickdrawer_p_p.h b/src/quicktemplates2/qquickdrawer_p_p.h index 323ba319..e8add86c 100644 --- a/src/quicktemplates2/qquickdrawer_p_p.h +++ b/src/quicktemplates2/qquickdrawer_p_p.h @@ -71,6 +71,7 @@ public: bool startDrag(QQuickWindow *window, QMouseEvent *event); bool grabMouse(QMouseEvent *event); + bool ungrabMouse(QMouseEvent *event); bool handleMousePressEvent(QQuickItem *item, QMouseEvent *event); bool handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event); |