diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-05-28 14:06:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-28 07:17:09 +0200 |
commit | 81726bcb8d2ea58f785f7d1f3bb3de8bb089d6ec (patch) | |
tree | 545b9c91d4973998e8045661b6d2807ab15a84dc /src/quick/items/qquickvisualitemmodel.cpp | |
parent | 2533a40cf26ded5b777aae6b3c49813a044ab735 (diff) |
Fix flicker when changing ListView currentIndex with VisualItemModel.
Return the Referenced flag when the view has outstanding references
otherwise it will attempt to hide an item if believes shouldn't be
visible.
Task-number: QTBUG-25849
Change-Id: I7387ab8322a1cd7f3386685086b2b8ad10c8b4f0
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickvisualitemmodel.cpp')
-rw-r--r-- | src/quick/items/qquickvisualitemmodel.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/quick/items/qquickvisualitemmodel.cpp b/src/quick/items/qquickvisualitemmodel.cpp index 1cefcb4ce9..1cb595ec4d 100644 --- a/src/quick/items/qquickvisualitemmodel.cpp +++ b/src/quick/items/qquickvisualitemmodel.cpp @@ -192,8 +192,10 @@ QQuickItem *QQuickVisualItemModel::item(int index, bool) Q_D(QQuickVisualItemModel); QQuickVisualItemModelPrivate::Item &item = d->children[index]; item.addRef(); - emit initItem(index, item.item); - emit createdItem(index, item.item); + if (item.ref == 1) { + emit initItem(index, item.item); + emit createdItem(index, item.item); + } return item.item; } @@ -205,6 +207,8 @@ QQuickVisualModel::ReleaseFlags QQuickVisualItemModel::release(QQuickItem *item) if (d->children[idx].deref()) { // XXX todo - the original did item->scene()->removeItem(). Why? item->setParentItem(0); + } else { + return QQuickVisualModel::Referenced; } } return 0; |