diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-06-04 13:34:57 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-06 10:14:01 +0200 |
commit | c37c4215b0cfd31967b5799ebb0f0e78a55f7e85 (patch) | |
tree | e4bc695f80093b598c325ab530ed61605b79a943 /src/quick/items/qquickgridview.cpp | |
parent | 734c8ffbd361467d01eb278e9e289795f7139e94 (diff) |
Don't emit moving and flicking signals unnecessarily
The moving and flicking signals should only be emitted once when
the view has been moved/flicked both vertically and horizontally. (This
was already done correctly for the dragging signals.)
Also changes QQuickFlickable::flick() to return bool instead of void.
Subclasses no longer emit the flicking signals but call
flickingStarted() instead.
Also splits the tst_qquickflickable::movingAndDragging() test up into
several tests.
Change-Id: Ie527568a9702049dd0bcda18c2eb3e43d8938a18
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickgridview.cpp')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index 3315deaebf..235005b758 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -229,7 +229,7 @@ public: virtual void updateViewport(); virtual void fixupPosition(); virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent); - virtual void flick(QQuickItemViewPrivate::AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + virtual bool flick(QQuickItemViewPrivate::AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, QQuickTimeLineCallback::Callback fixupCallback, qreal velocity); QQuickGridView::Flow flow; @@ -1023,16 +1023,14 @@ void QQuickGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExte fixupMode = Normal; } -void QQuickGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, +bool QQuickGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, QQuickTimeLineCallback::Callback fixupCallback, qreal velocity) { - Q_Q(QQuickGridView); data.fixingUp = false; moveReason = Mouse; if ((!haveHighlightRange || highlightRange != QQuickGridView::StrictlyEnforceRange) && snapMode == QQuickGridView::NoSnap) { - QQuickItemViewPrivate::flick(data, minExtent, maxExtent, vSize, fixupCallback, velocity); - return; + return QQuickItemViewPrivate::flick(data, minExtent, maxExtent, vSize, fixupCallback, velocity); } qreal maxDistance = 0; qreal dataValue = isContentFlowReversed() ? -data.move.value()+size() : data.move.value(); @@ -1125,21 +1123,11 @@ void QQuickGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExte timeline.reset(data.move); timeline.accel(data.move, v, accel, maxDistance + overshootDist); timeline.callback(QQuickTimeLineCallback(&data.move, fixupCallback, this)); - if (!hData.flicking && q->xflick()) { - hData.flicking = true; - emit q->flickingChanged(); - emit q->flickingHorizontallyChanged(); - emit q->flickStarted(); - } - if (!vData.flicking && q->yflick()) { - vData.flicking = true; - emit q->flickingChanged(); - emit q->flickingVerticallyChanged(); - emit q->flickStarted(); - } + return true; } else { timeline.reset(data.move); fixup(data, minExtent, maxExtent); + return false; } } |