diff options
author | Liang Qi <liang.qi@qt.io> | 2020-02-15 10:19:38 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2020-02-15 10:19:38 +0100 |
commit | c9260cd940fe9ca0e440b715cbfc13dd046e07b0 (patch) | |
tree | 9e4a97453f79dc7cf25434785e72920172535afd /src/quicktemplates2/qquickcontrol.cpp | |
parent | 8f9f0508e4f3469ae56874fcecc89023b51c2a75 (diff) | |
parent | 025f938c1b4676782674d54375e1e4e560e4b6cd (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts:
.qmake.conf
tests/auto/qquickpopup/tst_qquickpopup.cpp
Change-Id: Id3bca2da290234f3c69845ffe18c6d9193a1bd28
Diffstat (limited to 'src/quicktemplates2/qquickcontrol.cpp')
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 6b845ae6..4eb411c2 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -180,6 +180,12 @@ bool QQuickControlPrivate::acceptTouch(const QTouchEvent::TouchPoint &point) return true; } + // If the control is on a Flickable that has a pressDelay, then the press is never + // sent as a touch event, therefore we need to check for this case. + if (touchId == -1 && pressWasTouch && point.state() == Qt::TouchPointReleased && + point.pos() == previousPressPos) { + return true; + } return false; } #endif @@ -215,6 +221,8 @@ void QQuickControlPrivate::handleRelease(const QPointF &) if ((focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && QGuiApplication::styleHints()->setFocusOnTouchRelease()) setActiveFocus(q, Qt::MouseFocusReason); touchId = -1; + pressWasTouch = false; + previousPressPos = QPointF(); } void QQuickControlPrivate::handleUngrab() @@ -2121,6 +2129,10 @@ void QQuickControl::mousePressEvent(QMouseEvent *event) { Q_D(QQuickControl); d->handlePress(event->localPos()); + if (event->source() == Qt::MouseEventSynthesizedByQt) { + d->pressWasTouch = true; + d->previousPressPos = event->localPos(); + } event->accept(); } |