diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-12-03 07:31:57 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-12-03 07:31:57 (GMT) |
commit | e4980ed3b6d143358c352904f4b679d5ae8504e9 (patch) | |
tree | 25a90260128be0bd9dc3bc63e637992bddba967a /src/declarative | |
parent | 2b07e188b91d2cb92a2c41f85678415c4dbb3721 (diff) | |
download | Qt-e4980ed3b6d143358c352904f4b679d5ae8504e9.zip Qt-e4980ed3b6d143358c352904f4b679d5ae8504e9.tar.gz Qt-e4980ed3b6d143358c352904f4b679d5ae8504e9.tar.bz2 |
Minor optimization for layout.
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicspositioners.cpp | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp index 70f0cb0..07bbf1f 100644 --- a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp +++ b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp @@ -243,38 +243,51 @@ void QmlGraphicsBasePositioner::prePositioning() d->_ep = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } - QSet<QmlGraphicsItem *> allItems; //Need to order children by creation order modified by stacking order //###can we avoid using the QGraphicsItemPrivate? QList<QGraphicsItem *> children = childItems(); qSort(children.begin(), children.end(), d->insertionOrder); positionedItems.clear(); - allItems.reserve(children.count()); - for (int ii = 0; ii < children.count(); ++ii) { - QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); - if (!child) - continue; - if (!d->_items.contains(child)){ + if (d->_items.isEmpty()) { + for (int ii = 0; ii < children.count(); ++ii) { + QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); + if (!child) + continue; d->watchChanges(child); d->_items += child; + if (child->opacity() != 0.0) + d->_newItems += child; + positionedItems << child; } - if (child->opacity() == 0.0){ - if (d->_stableItems.contains(child)){ - d->_leavingItems += child; - d->_stableItems -= child; + } else { + QSet<QmlGraphicsItem *> allItems; + allItems.reserve(children.count()); + for (int ii = 0; ii < children.count(); ++ii) { + QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); + if (!child) + continue; + if (!d->_items.contains(child)){ + d->watchChanges(child); + d->_items += child; } - }else if (!d->_stableItems.contains(child)){ - d->_newItems+=child; + if (child->opacity() == 0.0){ + if (d->_stableItems.contains(child)){ + d->_leavingItems += child; + d->_stableItems -= child; + } + }else if (!d->_stableItems.contains(child)){ + d->_newItems+=child; + } + allItems += child; + positionedItems << child; } - allItems += child; - positionedItems << child; - } - if (d->_items.count() != allItems.count()) { - QSet<QmlGraphicsItem *> deletedItems = d->_items - allItems; - foreach(QmlGraphicsItem *child, deletedItems){ - d->unwatchChanges(child); - d->_items -= child; + if (d->_items.count() != allItems.count()) { + QSet<QmlGraphicsItem *> deletedItems = d->_items - allItems; + foreach(QmlGraphicsItem *child, deletedItems){ + d->unwatchChanges(child); + d->_items -= child; + } } } d->_animated.clear(); |