diff options
author | Martin Jones <martin.jones@nokia.com> | 2011-09-26 13:13:02 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-28 01:12:34 +0200 |
commit | 40864ee84e41d53c412dd1b350624dcde07b009a (patch) | |
tree | fbdf72cd3e01a408e54f025bd2a8d5fe375ec905 /src/declarative/items/qsgflickable.cpp | |
parent | 6c0215a523b1294015e238018dc34cf56a46024c (diff) |
Manually apply SnapOneItem/Row changes from Qt 4.7
Apply following changes to Qt 5 for both QtQuick1 and QtQuick2 items:
cf23188de237009136fa1480ab8fd9e3ca364769
f85819fe083ae7c6804c884de68e906d153a6d11
09cd2f818208a83489fae034b80e6497b7cc83af
Task-number: QTBUG-20683
Change-Id: I974764e57e3004514bb4c9f46c5152ad07c136a7
Reviewed-on: http://codereview.qt-project.org/5484
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/declarative/items/qsgflickable.cpp')
-rw-r--r-- | src/declarative/items/qsgflickable.cpp | 115 |
1 files changed, 55 insertions, 60 deletions
diff --git a/src/declarative/items/qsgflickable.cpp b/src/declarative/items/qsgflickable.cpp index 91a93b6214..09bb8e3c2e 100644 --- a/src/declarative/items/qsgflickable.cpp +++ b/src/declarative/items/qsgflickable.cpp @@ -171,9 +171,7 @@ QSGFlickablePrivate::QSGFlickablePrivate() : contentItem(new QSGItem) , hData(this, &QSGFlickablePrivate::setViewportX) , vData(this, &QSGFlickablePrivate::setViewportY) - , flickingHorizontally(false), flickingVertically(false) , hMoved(false), vMoved(false) - , movingHorizontally(false), movingVertically(false) , stealMouse(false), pressed(false), interactive(true), calcVelocity(false) , pixelAligned(false) , deceleration(QML_FLICK_DEFAULTDECELERATION) @@ -286,18 +284,18 @@ void QSGFlickablePrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent else timeline.accel(data.move, v, deceleration, maxDistance); timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); - if (!flickingHorizontally && q->xflick()) { - flickingHorizontally = true; + if (!hData.flicking && q->xflick()) { + hData.flicking = true; emit q->flickingChanged(); emit q->flickingHorizontallyChanged(); - if (!flickingVertically) + if (!vData.flicking) emit q->flickStarted(); } - if (!flickingVertically && q->yflick()) { - flickingVertically = true; + if (!vData.flicking && q->yflick()) { + vData.flicking = true; emit q->flickingChanged(); emit q->flickingVerticallyChanged(); - if (!flickingHorizontally) + if (!hData.flicking) emit q->flickStarted(); } } else { @@ -645,11 +643,11 @@ void QSGFlickable::setInteractive(bool interactive) Q_D(QSGFlickable); if (interactive != d->interactive) { d->interactive = interactive; - if (!interactive && (d->flickingHorizontally || d->flickingVertically)) { + if (!interactive && (d->hData.flicking || d->vData.flicking)) { d->timeline.clear(); d->vTime = d->timeline.time(); - d->flickingHorizontally = false; - d->flickingVertically = false; + d->hData.flicking = false; + d->vData.flicking = false; emit flickingChanged(); emit flickingHorizontallyChanged(); emit flickingVerticallyChanged(); @@ -819,8 +817,8 @@ void QSGFlickablePrivate::handleMousePressEvent(QMouseEvent *event) pressPos = event->localPos(); hData.pressPos = hData.move.value(); vData.pressPos = vData.move.value(); - flickingHorizontally = false; - flickingVertically = false; + hData.flicking = false; + vData.flicking = false; QSGItemPrivate::start(pressTime); QSGItemPrivate::start(velocityTime); } @@ -944,13 +942,10 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event) pressed = false; // if we drag then pause before release we should not cause a flick. - if (QSGItemPrivate::elapsed(lastPosTime) < 100) { - vData.updateVelocity(); - hData.updateVelocity(); - } else { - hData.velocity = 0.0; - vData.velocity = 0.0; - } + qint64 elapsed = QSGItemPrivate::elapsed(lastPosTime); + + vData.updateVelocity(); + hData.updateVelocity(); draggingEnding(); @@ -959,7 +954,7 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event) vTime = timeline.time(); - qreal velocity = vData.velocity; + qreal velocity = elapsed < 100 ? vData.velocity : 0; if (vData.atBeginning || vData.atEnd) velocity /= 2; if (q->yflick() && qAbs(velocity) > MinimumFlickVelocity && qAbs(event->localPos().y() - pressPos.y()) > FlickThreshold) { @@ -970,7 +965,7 @@ void QSGFlickablePrivate::handleMouseReleaseEvent(QMouseEvent *event) fixupY(); } - velocity = hData.velocity; + velocity = elapsed < 100 ? hData.velocity : 0; if (hData.atBeginning || hData.atEnd) velocity /= 2; if (q->xflick() && qAbs(velocity) > MinimumFlickVelocity && qAbs(event->localPos().x() - pressPos.x()) > FlickThreshold) { @@ -1036,9 +1031,9 @@ void QSGFlickable::wheelEvent(QWheelEvent *event) valid = true; } if (valid) { - d->flickingVertically = false; + d->vData.flicking = false; d->flickY(d->vData.velocity); - if (d->flickingVertically) { + if (d->vData.flicking) { d->vMoved = true; movementStarting(); } @@ -1054,9 +1049,9 @@ void QSGFlickable::wheelEvent(QWheelEvent *event) valid = true; } if (valid) { - d->flickingHorizontally = false; + d->hData.flicking = false; d->flickX(d->hData.velocity); - if (d->flickingHorizontally) { + if (d->hData.flicking) { d->hMoved = true; movementStarting(); } @@ -1202,7 +1197,7 @@ void QSGFlickable::viewportMoved() } } - if (!d->vData.inOvershoot && !d->vData.fixingUp && d->flickingVertically + if (!d->vData.inOvershoot && !d->vData.fixingUp && d->vData.flicking && (d->vData.move.value() > minYExtent() || d->vData.move.value() < maxYExtent()) && qAbs(d->vData.smoothVelocity.value()) > 100) { // Increase deceleration if we've passed a bound @@ -1212,7 +1207,7 @@ void QSGFlickable::viewportMoved() d->timeline.accel(d->vData.move, -d->vData.smoothVelocity.value(), d->deceleration*QML_FLICK_OVERSHOOTFRICTION, maxDistance); d->timeline.callback(QDeclarativeTimeLineCallback(&d->vData.move, d->fixupY_callback, d)); } - if (!d->hData.inOvershoot && !d->hData.fixingUp && d->flickingHorizontally + if (!d->hData.inOvershoot && !d->hData.fixingUp && d->hData.flicking && (d->hData.move.value() > minXExtent() || d->hData.move.value() < maxXExtent()) && qAbs(d->hData.smoothVelocity.value()) > 100) { // Increase deceleration if we've passed a bound @@ -1244,7 +1239,7 @@ void QSGFlickable::geometryChanged(const QRectF &newGeometry, emit contentWidthChanged(); } // Make sure that we're entirely in view. - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupX(); } @@ -1257,7 +1252,7 @@ void QSGFlickable::geometryChanged(const QRectF &newGeometry, emit contentHeightChanged(); } // Make sure that we're entirely in view. - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupY(); } @@ -1388,7 +1383,7 @@ void QSGFlickable::setContentWidth(qreal w) d->contentItem->setWidth(w); d->hData.markExtentsDirty(); // Make sure that we're entirely in view. - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupX(); } else if (!d->pressed && d->hData.fixingUp) { @@ -1417,7 +1412,7 @@ void QSGFlickable::setContentHeight(qreal h) d->contentItem->setHeight(h); d->vData.markExtentsDirty(); // Make sure that we're entirely in view. - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupY(); } else if (!d->pressed && d->vData.fixingUp) { @@ -1452,7 +1447,7 @@ void QSGFlickable::setTopMargin(qreal m) return; d->vData.startMargin = m; d->vData.markExtentsDirty(); - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupY(); } @@ -1473,7 +1468,7 @@ void QSGFlickable::setBottomMargin(qreal m) return; d->vData.endMargin = m; d->vData.markExtentsDirty(); - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupY(); } @@ -1494,7 +1489,7 @@ void QSGFlickable::setLeftMargin(qreal m) return; d->hData.startMargin = m; d->hData.markExtentsDirty(); - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupX(); } @@ -1515,7 +1510,7 @@ void QSGFlickable::setRightMargin(qreal m) return; d->hData.endMargin = m; d->hData.markExtentsDirty(); - if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { + if (!d->pressed && !d->hData.moving && !d->vData.moving) { d->fixupMode = QSGFlickablePrivate::Immediate; d->fixupX(); } @@ -1776,7 +1771,7 @@ void QSGFlickable::setFlickDeceleration(qreal deceleration) bool QSGFlickable::isFlicking() const { Q_D(const QSGFlickable); - return d->flickingHorizontally || d->flickingVertically; + return d->hData.flicking || d->vData.flicking; } /*! @@ -1790,13 +1785,13 @@ bool QSGFlickable::isFlicking() const bool QSGFlickable::isFlickingHorizontally() const { Q_D(const QSGFlickable); - return d->flickingHorizontally; + return d->hData.flicking; } bool QSGFlickable::isFlickingVertically() const { Q_D(const QSGFlickable); - return d->flickingVertically; + return d->vData.flicking; } /*! @@ -1903,36 +1898,36 @@ void QSGFlickable::setPressDelay(int delay) bool QSGFlickable::isMoving() const { Q_D(const QSGFlickable); - return d->movingHorizontally || d->movingVertically; + return d->hData.moving || d->vData.moving; } bool QSGFlickable::isMovingHorizontally() const { Q_D(const QSGFlickable); - return d->movingHorizontally; + return d->hData.moving; } bool QSGFlickable::isMovingVertically() const { Q_D(const QSGFlickable); - return d->movingVertically; + return d->vData.moving; } void QSGFlickable::movementStarting() { Q_D(QSGFlickable); - if (d->hMoved && !d->movingHorizontally) { - d->movingHorizontally = true; + if (d->hMoved && !d->hData.moving) { + d->hData.moving = true; emit movingChanged(); emit movingHorizontallyChanged(); - if (!d->movingVertically) + if (!d->vData.moving) emit movementStarted(); } - else if (d->vMoved && !d->movingVertically) { - d->movingVertically = true; + else if (d->vMoved && !d->vData.moving) { + d->vData.moving = true; emit movingChanged(); emit movingVerticallyChanged(); - if (!d->movingHorizontally) + if (!d->hData.moving) emit movementStarted(); } } @@ -1949,20 +1944,20 @@ void QSGFlickable::movementEnding() void QSGFlickable::movementXEnding() { Q_D(QSGFlickable); - if (d->flickingHorizontally) { - d->flickingHorizontally = false; + if (d->hData.flicking) { + d->hData.flicking = false; emit flickingChanged(); emit flickingHorizontallyChanged(); - if (!d->flickingVertically) + if (!d->vData.flicking) emit flickEnded(); } if (!d->pressed && !d->stealMouse) { - if (d->movingHorizontally) { - d->movingHorizontally = false; + if (d->hData.moving) { + d->hData.moving = false; d->hMoved = false; emit movingChanged(); emit movingHorizontallyChanged(); - if (!d->movingVertically) + if (!d->vData.moving) emit movementEnded(); } } @@ -1972,20 +1967,20 @@ void QSGFlickable::movementXEnding() void QSGFlickable::movementYEnding() { Q_D(QSGFlickable); - if (d->flickingVertically) { - d->flickingVertically = false; + if (d->vData.flicking) { + d->vData.flicking = false; emit flickingChanged(); emit flickingVerticallyChanged(); - if (!d->flickingHorizontally) + if (!d->hData.flicking) emit flickEnded(); } if (!d->pressed && !d->stealMouse) { - if (d->movingVertically) { - d->movingVertically = false; + if (d->vData.moving) { + d->vData.moving = false; d->vMoved = false; emit movingChanged(); emit movingVerticallyChanged(); - if (!d->movingHorizontally) + if (!d->hData.moving) emit movementEnded(); } } |