aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickslider.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-21 08:00:01 +0300
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-21 08:00:01 +0300
commit284057d12fea9339744ddc646aa53cfe6c3c95a1 (patch)
tree61bb12637c56a282830d683e346057b00d332b7a /src/quicktemplates2/qquickslider.cpp
parent91b2721fdc2aba28d3c45111779fed70f7c4f87d (diff)
parentc8e9b5f25fb12c3b7983658d738165181b4d6672 (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.cpp92
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)
{