diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-21 08:00:01 +0300 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-21 08:00:01 +0300 |
commit | 284057d12fea9339744ddc646aa53cfe6c3c95a1 (patch) | |
tree | 61bb12637c56a282830d683e346057b00d332b7a /src/quicktemplates2/qquickslider.cpp | |
parent | 91b2721fdc2aba28d3c45111779fed70f7c4f87d (diff) | |
parent | c8e9b5f25fb12c3b7983658d738165181b4d6672 (diff) |
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
src/imports/controls/RoundButton.qml
src/imports/controls/universal/RadioDelegate.qml
Change-Id: I4cb14c19bd5f6e19b70b03fb394c76712e6dda08
Diffstat (limited to 'src/quicktemplates2/qquickslider.cpp')
-rw-r--r-- | src/quicktemplates2/qquickslider.cpp | 92 |
1 files changed, 29 insertions, 63 deletions
diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp index 7c64957b..2e337c3a 100644 --- a/src/quicktemplates2/qquickslider.cpp +++ b/src/quicktemplates2/qquickslider.cpp @@ -96,7 +96,6 @@ public: stepSize(0), live(true), pressed(false), - touchId(-1), orientation(Qt::Horizontal), snapMode(QQuickSlider::NoSnap), handle(nullptr) @@ -108,10 +107,10 @@ public: void setPosition(qreal position); void updatePosition(); - void handlePress(const QPointF &point); - void handleMove(const QPointF &point); - void handleRelease(const QPointF &point); - void handleUngrab(); + void handlePress(const QPointF &point) override; + void handleMove(const QPointF &point) override; + void handleRelease(const QPointF &point) override; + void handleUngrab() override; qreal from; qreal to; @@ -120,7 +119,6 @@ public: qreal stepSize; bool live; bool pressed; - int touchId; QPointF pressPoint; Qt::Orientation orientation; QQuickSlider::SnapMode snapMode; @@ -187,6 +185,7 @@ void QQuickSliderPrivate::updatePosition() void QQuickSliderPrivate::handlePress(const QPointF &point) { Q_Q(QQuickSlider); + QQuickControlPrivate::handlePress(point); pressPoint = point; q->setPressed(true); } @@ -194,6 +193,7 @@ void QQuickSliderPrivate::handlePress(const QPointF &point) void QQuickSliderPrivate::handleMove(const QPointF &point) { Q_Q(QQuickSlider); + QQuickControlPrivate::handleMove(point); const qreal oldPos = position; qreal pos = positionAt(point); if (snapMode == QQuickSlider::SnapAlways) @@ -209,7 +209,7 @@ void QQuickSliderPrivate::handleMove(const QPointF &point) void QQuickSliderPrivate::handleRelease(const QPointF &point) { Q_Q(QQuickSlider); - touchId = -1; + QQuickControlPrivate::handleRelease(point); pressPoint = QPointF(); const qreal oldPos = position; qreal pos = positionAt(point); @@ -230,7 +230,7 @@ void QQuickSliderPrivate::handleRelease(const QPointF &point) void QQuickSliderPrivate::handleUngrab() { Q_Q(QQuickSlider); - touchId = -1; + QQuickControlPrivate::handleUngrab(); pressPoint = QPointF(); q->setPressed(false); } @@ -650,93 +650,59 @@ void QQuickSlider::mousePressEvent(QMouseEvent *event) { Q_D(QQuickSlider); QQuickControl::mousePressEvent(event); - d->handlePress(event->localPos()); d->handleMove(event->localPos()); } void QQuickSlider::mouseMoveEvent(QMouseEvent *event) { Q_D(QQuickSlider); - QQuickControl::mouseMoveEvent(event); if (!keepMouseGrab()) { if (d->orientation == Qt::Horizontal) setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->localPos().x() - d->pressPoint.x(), Qt::XAxis, event)); else setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(event->localPos().y() - d->pressPoint.y(), Qt::YAxis, event)); } - d->handleMove(event->localPos()); -} - -void QQuickSlider::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickSlider); - QQuickControl::mouseReleaseEvent(event); - d->handleRelease(event->localPos()); -} - -void QQuickSlider::mouseUngrabEvent() -{ - Q_D(QQuickSlider); - QQuickControl::mouseUngrabEvent(); - d->handleUngrab(); + QQuickControl::mouseMoveEvent(event); } void QQuickSlider::touchEvent(QTouchEvent *event) { Q_D(QQuickSlider); switch (event->type()) { - case QEvent::TouchBegin: - if (d->touchId == -1) { - const QTouchEvent::TouchPoint point = event->touchPoints().first(); - d->touchId = point.id(); - d->handlePress(point.pos()); - } else { - event->ignore(); - } - break; - case QEvent::TouchUpdate: for (const QTouchEvent::TouchPoint &point : event->touchPoints()) { - if (point.id() != d->touchId) + if (!d->acceptTouch(point)) continue; - if (!keepTouchGrab()) { - if (d->orientation == Qt::Horizontal) - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - d->pressPoint.x(), Qt::XAxis, &point)); - else - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - d->pressPoint.y(), Qt::YAxis, &point)); + switch (point.state()) { + case Qt::TouchPointPressed: + d->handlePress(point.pos()); + break; + case Qt::TouchPointMoved: + if (!keepTouchGrab()) { + if (d->orientation == Qt::Horizontal) + setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - d->pressPoint.x(), Qt::XAxis, &point)); + else + setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - d->pressPoint.y(), Qt::YAxis, &point)); + } + if (keepTouchGrab()) + d->handleMove(point.pos()); + break; + case Qt::TouchPointReleased: + d->handleRelease(point.pos()); + break; + default: + break; } - if (keepTouchGrab()) - d->handleMove(point.pos()); - } - break; - - case QEvent::TouchEnd: - for (const QTouchEvent::TouchPoint &point : event->touchPoints()) { - if (point.id() != d->touchId) - continue; - - d->handleRelease(point.pos()); } break; - case QEvent::TouchCancel: - d->handleUngrab(); - break; - default: QQuickControl::touchEvent(event); break; } } -void QQuickSlider::touchUngrabEvent() -{ - Q_D(QQuickSlider); - QQuickControl::touchUngrabEvent(); - d->handleUngrab(); -} - #if QT_CONFIG(wheelevent) void QQuickSlider::wheelEvent(QWheelEvent *event) { |