diff options
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativeflickable.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativeflickable.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index f9c16b3..33c21b1 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -1046,10 +1046,16 @@ void QDeclarativeFlickable::cancelFlick() void QDeclarativeFlickablePrivate::data_append(QDeclarativeListProperty<QObject> *prop, QObject *o) { QGraphicsObject *i = qobject_cast<QGraphicsObject *>(o); - if (i) - i->setParentItem(static_cast<QDeclarativeFlickablePrivate*>(prop->data)->contentItem); - else + if (i) { + QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(i); + if (static_cast<QDeclarativeItemPrivate*>(d)->componentComplete) { + i->setParentItem(static_cast<QDeclarativeFlickablePrivate*>(prop->data)->contentItem); + } else { + d->setParentItemHelper(static_cast<QDeclarativeFlickablePrivate*>(prop->data)->contentItem, 0, 0); + } + } else { o->setParent(prop->object); + } } static inline int children_count_helper(QGraphicsObject *object) @@ -1071,8 +1077,16 @@ static inline void children_clear_helper(QGraphicsObject *object) { QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(object); int childCount = d->children.count(); - for (int index = 0 ;index < childCount; index++) - QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); + if (static_cast<QDeclarativeItemPrivate*>(d)->componentComplete) { + for (int index = 0 ;index < childCount; index++) { + d->children.at(0)->setParentItem(0); + } + } else { + for (int index = 0 ;index < childCount; index++) { + QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); + } + } + } int QDeclarativeFlickablePrivate::data_count(QDeclarativeListProperty<QObject> *prop) |