summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-12-03 07:31:57 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-12-03 07:31:57 (GMT)
commite4980ed3b6d143358c352904f4b679d5ae8504e9 (patch)
tree25a90260128be0bd9dc3bc63e637992bddba967a /src/declarative
parent2b07e188b91d2cb92a2c41f85678415c4dbb3721 (diff)
downloadQt-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.cpp55
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();