diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-01-06 16:14:53 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-06 08:27:24 +0100 |
commit | 3582101128dc7de7c899712935fcd56d90a3865e (patch) | |
tree | 34cdab25c8a927aa72322c66af1723a8c583e261 | |
parent | 8e0ea24115bcc9bf88ff09572feb05493ebc35c4 (diff) |
Flickable now emits contentX/YChanged after the content is updated
Currently view content is not created until after onContentYChanged
handlers are called, which is not what the user would expect
This change moves the contentX/YChanged emission to
after the content update and also removes the need for a
connect() in Flickable init.
Task-number: QTBUG-23462
Change-Id: I11e87a78160033e3ec6a9e7de733474f8345050d
Reviewed-by: Bea Lam <bea.lam@nokia.com>
-rw-r--r-- | src/quick/items/qquickflickable.cpp | 23 | ||||
-rw-r--r-- | src/quick/items/qquickflickable_p.h | 1 |
2 files changed, 8 insertions, 16 deletions
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp index cb8c525a7b..6df84f3d97 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -190,7 +190,6 @@ void QQuickFlickablePrivate::init() Q_Q(QQuickFlickable); QDeclarative_setParent_noEvent(contentItem, q); contentItem->setParentItem(q); - FAST_CONNECT(&timeline, SIGNAL(updated()), q, SLOT(ticked())) FAST_CONNECT(&timeline, SIGNAL(completed()), q, SLOT(movementEnding())) q->setAcceptedMouseButtons(Qt::LeftButton); q->setFiltersChildMouseEvents(true); @@ -238,9 +237,13 @@ void QQuickFlickablePrivate::itemGeometryChanged(QQuickItem *item, const QRectF { Q_Q(QQuickFlickable); if (item == contentItem) { - if (newGeom.x() != oldGeom.x()) + bool xChanged = newGeom.x() != oldGeom.x(); + bool yChanged = newGeom.y() != oldGeom.y(); + if (xChanged || yChanged) + q->viewportMoved(); + if (xChanged) emit q->contentXChanged(); - if (newGeom.y() != oldGeom.y()) + if (yChanged) emit q->contentYChanged(); } } @@ -595,10 +598,8 @@ void QQuickFlickable::setContentX(qreal pos) d->timeline.reset(d->hData.move); d->vTime = d->timeline.time(); movementXEnding(); - if (-pos != d->hData.move.value()) { + if (-pos != d->hData.move.value()) d->hData.move.setValue(-pos); - viewportMoved(); - } } qreal QQuickFlickable::contentY() const @@ -614,10 +615,8 @@ void QQuickFlickable::setContentY(qreal pos) d->timeline.reset(d->vData.move); d->vTime = d->timeline.time(); movementYEnding(); - if (-pos != d->vData.move.value()) { + if (-pos != d->vData.move.value()) d->vData.move.setValue(-pos); - viewportMoved(); - } } /*! @@ -711,11 +710,6 @@ bool QQuickFlickable::isAtYBeginning() const return d->vData.atBeginning; } -void QQuickFlickable::ticked() -{ - viewportMoved(); -} - /*! \qmlproperty Item QtQuick2::Flickable::contentItem @@ -927,7 +921,6 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event) if (hMoved || vMoved) { draggingStarting(); q->movementStarting(); - q->viewportMoved(); } if (!lastPos.isNull()) { diff --git a/src/quick/items/qquickflickable_p.h b/src/quick/items/qquickflickable_p.h index 28df326e0a..2c8e24365a 100644 --- a/src/quick/items/qquickflickable_p.h +++ b/src/quick/items/qquickflickable_p.h @@ -233,7 +233,6 @@ protected: QQuickFlickableVisibleArea *visibleArea(); protected Q_SLOTS: - virtual void ticked(); void movementStarting(); void movementEnding(); |