aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-01-06 16:14:53 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-06 08:27:24 +0100
commit3582101128dc7de7c899712935fcd56d90a3865e (patch)
tree34cdab25c8a927aa72322c66af1723a8c583e261
parent8e0ea24115bcc9bf88ff09572feb05493ebc35c4 (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.cpp23
-rw-r--r--src/quick/items/qquickflickable_p.h1
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();