From 8302f03e137a73543ab52ff451781617ce8a8760 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Wed, 23 Sep 2009 14:45:47 +1000 Subject: Repeater is more consistent with its docs Task-number: QT-2030 Reviewed-by: Yann Bodson --- src/declarative/fx/qfxrepeater.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/declarative/fx/qfxrepeater.cpp b/src/declarative/fx/qfxrepeater.cpp index 84804ce..5ef7b10 100644 --- a/src/declarative/fx/qfxrepeater.cpp +++ b/src/declarative/fx/qfxrepeater.cpp @@ -282,14 +282,26 @@ void QFxRepeater::regenerate() if (!d->model || !d->model->count() || !d->model->isValid() || !parentItem() || !isComponentComplete()) return; - if (d->model) { - for (int ii = 0; ii < count(); ++ii) { - QFxItem *item = d->model->item(ii); - if (item) { - item->setParent(parentItem()); - d->deletables << item; - } + //In order to do the insertion like the examples, we have to be at the + //same point in the childItems() list. Temporary measure until we think of something better + int pos = parentItem()->childItems().indexOf(this); + Q_ASSERT(pos != -1); + QList otherChildren; + for (int ii = pos+1; ii < parentItem()->childItems().count(); ii++){ + QGraphicsItem* otherChild = parentItem()->childItems()[ii]; + otherChildren << otherChild; + otherChild->setParentItem(0); + } + + for (int ii = 0; ii < count(); ++ii) { + QFxItem *item = d->model->item(ii); + if (item) { + item->setParent(parentItem()); + d->deletables << item; } } + + foreach(QGraphicsItem* other, otherChildren) + other->setParentItem(parentItem()); } QT_END_NAMESPACE -- cgit v0.12