diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-03-21 12:55:36 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-21 08:04:33 +0100 |
commit | 80b5612708a115613c534644053eb0d8b2cda108 (patch) | |
tree | 28ce7e453e8b1020d452ef68d038a3693564d521 /src/quick/items/qquickitemview.cpp | |
parent | dd952a25aacaba163df22cd35da299c3719f5d73 (diff) |
Fix margins for right-to-left mode
The behaviour for considering left and right margins was inconsistent
in views with a right to left layout; these values were reversed for
extent calculations but not for general positioning. With this change
the left and right margins are never reversed in a right-to-left layout,
so minXExtent and maxXExtent calculations always use startMargin
and endMargin respectively, regardless of layout direction.
Also fixes calculation of endOffset in trackedPositionChanged() when
in horizontal orientation.
Change-Id: Ie00e3d4c2bd38d8fe6ac0213702206b88bfa895e
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitemview.cpp')
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 50a3216bf0..0d95500860 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1101,9 +1101,9 @@ void QQuickItemView::trackedPositionChanged() if (d->layoutOrientation() == Qt::Vertical) endOffset += d->vData.endMargin; else if (d->isContentFlowReversed()) - endOffset += d->hData.endMargin; - else endOffset += d->hData.startMargin; + else + endOffset += d->hData.endMargin; trackedPos += endOffset; trackedEndPos += endOffset; toItemPos += endOffset; @@ -1204,12 +1204,11 @@ qreal QQuickItemView::minXExtent() const return QQuickFlickable::minXExtent(); if (d->hData.minExtentDirty) { - d->minExtent = -d->startPosition(); + d->minExtent = -d->startPosition() + d->hData.startMargin; qreal highlightStart; qreal highlightEnd; qreal endPositionFirstItem = 0; if (d->isContentFlowReversed()) { - d->minExtent += d->hData.endMargin; if (d->model && d->model->count()) endPositionFirstItem = d->positionAt(d->model->count()-1); else if (d->header) @@ -1222,7 +1221,6 @@ qreal QQuickItemView::minXExtent() const if (d->minExtent < maxX) d->minExtent = maxX; } else { - d->minExtent += d->hData.startMargin; endPositionFirstItem = d->endPositionAt(0); highlightStart = d->highlightRangeStart; highlightEnd = d->highlightRangeEnd; @@ -1279,7 +1277,7 @@ qreal QQuickItemView::maxXExtent() const if (d->isContentFlowReversed()) { if (d->header) d->maxExtent -= d->headerSize(); - d->maxExtent -= d->hData.startMargin; + d->maxExtent -= d->hData.endMargin; } else { if (d->footer) d->maxExtent -= d->footerSize(); @@ -1314,7 +1312,7 @@ qreal QQuickItemView::xOrigin() const { Q_D(const QQuickItemView); if (d->isContentFlowReversed()) - return -maxXExtent() + d->size() - d->hData.startMargin; + return -maxXExtent() + d->size() - d->hData.endMargin; else return -minXExtent() + d->hData.startMargin; } |