aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickscrollbar.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-11 13:19:30 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-11 13:19:30 +0200
commit3408d28e3c058c620f4dfb167a1e25c3618fc90f (patch)
treef70f55faf78e89e2260f7464868c0feefbbf647a /src/quicktemplates2/qquickscrollbar.cpp
parent40f59da21a74b5999db90e1eb7073f292ac3e54e (diff)
parent880475bbe620a533db7b7b744e0b4c98fbf34d1b (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/quicktemplates2/qquickcontrol.cpp Change-Id: I73a9946da4214dcb8c877e716af5a8bb64335f69
Diffstat (limited to 'src/quicktemplates2/qquickscrollbar.cpp')
-rw-r--r--src/quicktemplates2/qquickscrollbar.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp
index 6050149e..240f6601 100644
--- a/src/quicktemplates2/qquickscrollbar.cpp
+++ b/src/quicktemplates2/qquickscrollbar.cpp
@@ -165,6 +165,7 @@ QQuickScrollBarPrivate::QQuickScrollBarPrivate()
moving(false),
interactive(true),
explicitInteractive(false),
+ touchId(-1),
orientation(Qt::Vertical),
snapMode(QQuickScrollBar::NoSnap),
policy(QQuickScrollBar::AsNeeded)
@@ -268,6 +269,7 @@ void QQuickScrollBarPrivate::handleRelease(const QPointF &point)
pos = snapPosition(pos);
q->setPosition(pos);
offset = 0.0;
+ touchId = -1;
q->setPressed(false);
}
@@ -275,6 +277,7 @@ void QQuickScrollBarPrivate::handleUngrab()
{
Q_Q(QQuickScrollBar);
offset = 0.0;
+ touchId = -1;
q->setPressed(false);
}
@@ -625,6 +628,7 @@ void QQuickScrollBar::mousePressEvent(QMouseEvent *event)
Q_D(QQuickScrollBar);
QQuickControl::mousePressEvent(event);
d->handlePress(event->localPos());
+ d->handleMove(event->localPos());
}
void QQuickScrollBar::mouseMoveEvent(QMouseEvent *event)
@@ -648,6 +652,55 @@ void QQuickScrollBar::mouseUngrabEvent()
d->handleUngrab();
}
+void QQuickScrollBar::touchEvent(QTouchEvent *event)
+{
+ Q_D(QQuickScrollBar);
+ 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)
+ continue;
+
+ 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 QQuickScrollBar::touchUngrabEvent()
+{
+ Q_D(QQuickScrollBar);
+ QQuickControl::touchUngrabEvent();
+ d->handleUngrab();
+}
+
#if QT_CONFIG(quicktemplates2_hover)
void QQuickScrollBar::hoverChange()
{