From 1d30c86ab0b0c609c68bb53adc633b3da8b2863d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 15 Sep 2010 19:05:09 +0200 Subject: Fix bug in 34b805d66c09fb324d1b6a7bcf259e8743ef3894 This time the implementation of clear is correct Reviewed-by: Marco Bubke --- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 7 ++++--- src/declarative/graphicsitems/qdeclarativeitem.cpp | 7 ++++--- src/gui/graphicsview/qgraphicsitem.cpp | 5 +++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index bf3d88b..5a94afb 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -1069,8 +1069,9 @@ static inline QObject *children_at_helper(QGraphicsObject *object, int index) static inline void children_clear_helper(QGraphicsObject *object) { QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(object); - for (int index = 0 ;index < d->children.count();index++) - QGraphicsItemPrivate::get(d->children.at(index))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); + int childCount = d->children.count(); + for (int index = 0 ;index < childCount; index++) + QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); } int QDeclarativeFlickablePrivate::data_count(QDeclarativeListProperty *prop) @@ -1087,7 +1088,7 @@ QObject *QDeclarativeFlickablePrivate::data_at(QDeclarativeListProperty const int j = i - resourcesCount; QGraphicsObject *contentObject = static_cast(prop->data)->contentItem; if (j < children_count_helper(contentObject)) - children_at_helper(contentObject, j); + return children_at_helper(contentObject, j); return 0; } diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 53a4710..0ac616d 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -1638,8 +1638,9 @@ static inline QObject *children_at_helper(QDeclarativeListProperty *pro static inline void children_clear_helper(QDeclarativeListProperty *prop) { QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(static_cast(prop->object)); - for (int index = 0 ;index < d->children.count();index++) - QGraphicsItemPrivate::get(d->children.at(index))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); + int childCount = d->children.count(); + for (int index = 0 ;index < childCount; index++) + QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); } int QDeclarativeItemPrivate::data_count(QDeclarativeListProperty *prop) @@ -1654,7 +1655,7 @@ QObject *QDeclarativeItemPrivate::data_at(QDeclarativeListProperty *pro return resources_at(prop, i); const int j = i - resourcesCount; if (j < children_count_helper(prop)) - children_at_helper(prop, j); + return children_at_helper(prop, j); return 0; } diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 9e43f2f..2600d06 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -7679,8 +7679,9 @@ QGraphicsObject *QGraphicsItemPrivate::children_at(QDeclarativeListProperty *list) { QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(static_cast(list->object)); - for (int index = 0 ;index < d->children.count();index++) - QGraphicsItemPrivate::get(d->children.at(index))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); + int childCount = d->children.count(); + for (int index = 0; index < childCount; index++) + QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, /*newParentVariant=*/0, /*thisPointerVariant=*/0); } /*! -- cgit v0.12