diff options
author | J-P Nurmi <jpnurmi@gmail.com> | 2013-06-22 15:49:26 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-04 08:26:59 +0200 |
commit | feaf7ca8f5f1b8508310e4046aada8833cc0f5cf (patch) | |
tree | fc842926b0f64b626fe0f8cc62c1a17d5e490f09 /src/quick/items/qquickgridview.cpp | |
parent | 672354676d8e968e2523d1aeb450213a46b8b27c (diff) |
Item views: do not track the geometry of items being removed
Task-number: QTBUG-31873
Change-Id: I4230893ccb2925ed9c2429d26b411264bf7c1c65
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Diffstat (limited to 'src/quick/items/qquickgridview.cpp')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index bc71a1c064..37276d5603 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -65,19 +65,8 @@ QT_BEGIN_NAMESPACE class FxGridItemSG : public FxViewItem { public: - FxGridItemSG(QQuickItem *i, QQuickGridView *v, bool own, bool trackGeometry) : FxViewItem(i, own, trackGeometry), view(v) { + FxGridItemSG(QQuickItem *i, QQuickGridView *v, bool own) : FxViewItem(i, v, own), view(v) { attached = static_cast<QQuickGridViewAttached*>(qmlAttachedPropertiesObject<QQuickGridView>(item)); - if (trackGeometry) { - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->addItemChangeListener(QQuickItemViewPrivate::get(view), QQuickItemPrivate::Geometry); - } - } - - ~FxGridItemSG() { - if (trackGeom) { - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->removeItemChangeListener(QQuickItemViewPrivate::get(view), QQuickItemPrivate::Geometry); - } } qreal position() const { @@ -470,7 +459,7 @@ FxViewItem *QQuickGridViewPrivate::newViewItem(int modelIndex, QQuickItem *item) { Q_Q(QQuickGridView); Q_UNUSED(modelIndex); - return new FxGridItemSG(item, q, false, false); + return new FxGridItemSG(item, q, false); } void QQuickGridViewPrivate::initializeViewItem(FxViewItem *item) @@ -478,8 +467,7 @@ void QQuickGridViewPrivate::initializeViewItem(FxViewItem *item) QQuickItemViewPrivate::initializeViewItem(item); // need to track current items that are animating - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item->item); - itemPrivate->addItemChangeListener(this, QQuickItemPrivate::Geometry); + item->trackGeometry(true); } bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, qreal bufferFrom, qreal bufferTo, bool doBuffer) @@ -739,7 +727,8 @@ void QQuickGridViewPrivate::createHighlight() if (currentItem) { QQuickItem *item = createHighlightItem(); if (item) { - FxGridItemSG *newHighlight = new FxGridItemSG(item, q, true, true); + FxGridItemSG *newHighlight = new FxGridItemSG(item, q, true); + newHighlight->trackGeometry(true); if (autoHighlight) resetHighlightPosition(); highlightXAnimator = new QSmoothedAnimation; @@ -817,7 +806,8 @@ void QQuickGridViewPrivate::updateFooter() QQuickItem *item = createComponentItem(footerComponent, 1.0); if (!item) return; - footer = new FxGridItemSG(item, q, true, true); + footer = new FxGridItemSG(item, q, true); + footer->trackGeometry(true); created = true; } @@ -861,7 +851,8 @@ void QQuickGridViewPrivate::updateHeader() QQuickItem *item = createComponentItem(headerComponent, 1.0); if (!item) return; - header = new FxGridItemSG(item, q, true, true); + header = new FxGridItemSG(item, q, true); + header->trackGeometry(true); created = true; } |