aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-09-04 14:38:20 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-09-06 11:41:29 +0000
commit61c85fdf580742ba174960400e806c057d0a6bd1 (patch)
tree3688664365bc3bd12f234bd6a399cd805e5f893f /src
parent1d3233e9737b494787941ceefad361fb39488f05 (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.cpp102
-rw-r--r--src/quicktemplates2/qquickdrawer_p_p.h1
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);