diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-05-05 16:46:14 +0200 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2017-05-08 08:57:12 +0000 |
commit | 1dc60a6b0c6fbf8da9473eb5b0435c1738865ce5 (patch) | |
tree | 42a23afae7c42103302b110bd4055155d1d963e2 /src | |
parent | 932d5f78296e604c57c8ebcfe5c94f5ce62238f4 (diff) |
Drawer: fix dragging from the inside over interactive contents
Task-number: QTBUG-60598
Change-Id: I65e6e9440c9450fbec4a53b9ee60e11b919c090a
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickdrawer.cpp | 7 | ||||
-rw-r--r-- | src/quicktemplates2/qquickpopup.cpp | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp index 94b8aea7..1ea3a8ab 100644 --- a/src/quicktemplates2/qquickdrawer.cpp +++ b/src/quicktemplates2/qquickdrawer.cpp @@ -301,7 +301,7 @@ bool QQuickDrawerPrivate::grabMouse(QQuickItem *item, QMouseEvent *event) Q_Q(QQuickDrawer); handleMouseEvent(item, event); - if (!window || !interactive || popupItem->keepMouseGrab()) + if (!window || !interactive || popupItem->keepMouseGrab() || popupItem->keepTouchGrab()) return false; const QPointF movePoint = event->windowPos(); @@ -377,6 +377,7 @@ bool QQuickDrawerPrivate::grabTouch(QQuickItem *item, QTouchEvent *event) } if (overThreshold) { + popupItem->grabTouchPoints(QVector<int>() << touchId); popupItem->setKeepTouchGrab(true); offset = offsetAt(movePoint); } @@ -422,7 +423,6 @@ bool QQuickDrawerPrivate::handleRelease(QQuickItem *item, const QPointF &point, return QQuickPopupPrivate::handleRelease(item, point, timestamp); } - pressPoint = QPointF(); velocityCalculator.stopMeasuring(point, timestamp); qreal velocity = 0; @@ -479,6 +479,9 @@ bool QQuickDrawerPrivate::handleRelease(QQuickItem *item, const QPointF &point, popupItem->setKeepMouseGrab(false); popupItem->setKeepTouchGrab(false); + pressPoint = QPointF(); + touchId = -1; + return wasGrabbed; } diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index aee013e3..a0134d42 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -304,7 +304,7 @@ bool QQuickPopupPrivate::acceptTouch(const QTouchEvent::TouchPoint &point) if (point.id() == touchId) return true; - if (touchId == -1 && point.state() == Qt::TouchPointPressed) { + if (touchId == -1 && point.state() != Qt::TouchPointReleased) { touchId = point.id(); return true; } |