diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-02-01 16:48:03 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-02 04:56:27 +0100 |
commit | 67ebd7014134df8c7981b815a99cd9d749e167db (patch) | |
tree | 75af05e865545cbf5611779143853d089184aa09 /src/quick | |
parent | c1e668a96764d1a252322ebae3af72097c27dfe1 (diff) |
Must update columns when GridView geometry changes
Regression from changes in 80d85e0017cb5cc4b0a0df6c19d4126bf5062731
Also remove shared duplicate code in visibleItemsChanged() in
ListView and GridView.
Change-Id: Ic3ab3ba070ddf9901a232ed5b3250c725797cf69
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 29 | ||||
-rw-r--r-- | src/quick/items/qquickgridview_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 3 | ||||
-rw-r--r-- | src/quick/items/qquickitemview_p_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 3 |
5 files changed, 23 insertions, 15 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index 8f8fac7cc8..80ab2ac55a 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -167,9 +167,10 @@ public: FxViewItem *snapItemAt(qreal pos) const; int snapIndex() const; + void resetColumns(); + virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer); virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo); - virtual void visibleItemsChanged(); virtual FxViewItem *newViewItem(int index, QQuickItem *item); virtual void repositionPackageItemAt(QQuickItem *item, int index); @@ -395,6 +396,13 @@ int QQuickGridViewPrivate::snapIndex() const return index; } +void QQuickGridViewPrivate::resetColumns() +{ + Q_Q(QQuickGridView); + qreal length = flow == QQuickGridView::LeftToRight ? q->width() : q->height(); + columns = (int)qMax((length + colSize()/2) / colSize(), qreal(1.)); +} + FxViewItem *QQuickGridViewPrivate::newViewItem(int modelIndex, QQuickItem *item) { Q_Q(QQuickGridView); @@ -535,18 +543,9 @@ bool QQuickGridViewPrivate::removeNonVisibleItems(qreal bufferFrom, qreal buffer return changed; } -void QQuickGridViewPrivate::visibleItemsChanged() -{ - updateHeader(); - updateFooter(); - updateViewport(); -} - void QQuickGridViewPrivate::updateViewport() { - Q_Q(QQuickGridView); - qreal length = flow == QQuickGridView::LeftToRight ? q->width() : q->height(); - columns = (int)qMax((length + colSize()/2) / colSize(), qreal(1.)); + resetColumns(); QQuickItemViewPrivate::updateViewport(); } @@ -1620,6 +1619,14 @@ void QQuickGridView::keyPressEvent(QKeyEvent *event) event->ignore(); QQuickItemView::keyPressEvent(event); } + +void QQuickGridView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + Q_D(QQuickGridView); + d->resetColumns(); + QQuickItemView::geometryChanged(newGeometry, oldGeometry); +} + /*! \qmlmethod QtQuick2::GridView::moveCurrentIndexUp() diff --git a/src/quick/items/qquickgridview_p.h b/src/quick/items/qquickgridview_p.h index 204e2744ab..8a2487bb07 100644 --- a/src/quick/items/qquickgridview_p.h +++ b/src/quick/items/qquickgridview_p.h @@ -108,6 +108,7 @@ Q_SIGNALS: protected: virtual void viewportMoved(); virtual void keyPressEvent(QKeyEvent *); + virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); }; class QQuickGridViewAttached : public QQuickItemViewAttached diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 3b264ab96b..a90d7cc8a0 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1331,6 +1331,9 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to) markExtentsDirty(); updateBeginningEnd(); visibleItemsChanged(); + updateHeader(); + updateFooter(); + updateViewport(); } if (prevCount != itemCount) diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h index 870baa04bc..56a22437ad 100644 --- a/src/quick/items/qquickitemview_p_p.h +++ b/src/quick/items/qquickitemview_p_p.h @@ -243,7 +243,7 @@ protected: virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, bool doBuffer) = 0; virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo) = 0; - virtual void visibleItemsChanged() = 0; + virtual void visibleItemsChanged() {} virtual FxViewItem *newViewItem(int index, QQuickItem *item) = 0; virtual void repositionPackageItemAt(QQuickItem *item, int index) = 0; diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index 21ff2c76a8..129db0c3cf 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -695,9 +695,6 @@ void QQuickListViewPrivate::visibleItemsChanged() } if (sectionCriteria) updateCurrentSection(); - updateHeader(); - updateFooter(); - updateViewport(); updateUnrequestedPositions(); } |