diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-11-05 07:42:20 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-11-05 07:42:20 (GMT) |
commit | 5cd33a36efdcd8ee2a50d6d362c2523b4a942529 (patch) | |
tree | 71b6fffd1720856048dff836c9fdadd82fd57a07 /src/declarative/graphicsitems | |
parent | 7dc306a32b12dcd783714fbb6078e100bc52f32e (diff) | |
parent | f8423b94bbf439831577644cd07d2aa4e997396a (diff) | |
download | Qt-5cd33a36efdcd8ee2a50d6d362c2523b4a942529.zip Qt-5cd33a36efdcd8ee2a50d6d362c2523b4a942529.tar.gz Qt-5cd33a36efdcd8ee2a50d6d362c2523b4a942529.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src/declarative/graphicsitems')
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicspositioners.cpp | 21 | ||||
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicspositioners_p.h | 1 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp index d6f1fb9..3b975ba 100644 --- a/src/declarative/graphicsitems/qmlgraphicspositioners.cpp +++ b/src/declarative/graphicsitems/qmlgraphicspositioners.cpp @@ -209,7 +209,12 @@ void QmlGraphicsBasePositioner::prePositioning() 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 = QList<QmlGraphicsItem*>(); + for (int ii = 0; ii < children.count(); ++ii) { QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); if (!child) @@ -234,6 +239,7 @@ void QmlGraphicsBasePositioner::prePositioning() d->_newItems+=child; } allItems += child; + positionedItems << child; } QSet<QmlGraphicsItem *> deletedItems = d->_items - allItems; foreach(QmlGraphicsItem *child, d->_items){ @@ -497,9 +503,9 @@ void QmlGraphicsColumn::doPositioning() } } - QList<QGraphicsItem *> children = childItems(); + QList<QmlGraphicsItem *> children = positionedItems; for (int ii = 0; ii < children.count(); ++ii) { - QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); + QmlGraphicsItem *child = children.at(ii); if (!child || isInvisible(child)) continue; @@ -653,9 +659,9 @@ void QmlGraphicsRow::doPositioning() applyRemove(changes, item); } } - QList<QGraphicsItem *> children = childItems(); + QList<QmlGraphicsItem *> children = positionedItems; for (int ii = 0; ii < children.count(); ++ii) { - QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(ii)); + QmlGraphicsItem *child = children.at(ii); if (!child || isInvisible(child)) continue; @@ -859,7 +865,7 @@ void QmlGraphicsGrid::doPositioning() QList<int> maxColWidth; QList<int> maxRowHeight; int childIndex =0; - QList<QGraphicsItem *> children = childItems(); + QList<QmlGraphicsItem *> children = positionedItems; for (int i=0; i<r; i++){ for (int j=0; j<c; j++){ if (j==0) @@ -869,7 +875,7 @@ void QmlGraphicsGrid::doPositioning() if (childIndex == children.count()) continue; - QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(children.at(childIndex++)); + QmlGraphicsItem *child = children.at(childIndex++); if (!child || isInvisible(child)) continue; if (child->width() > maxColWidth[j]) @@ -889,8 +895,7 @@ void QmlGraphicsGrid::doPositioning() applyRemove(changes, item); } } - foreach(QGraphicsItem* schild, children){ - QmlGraphicsItem *child = qobject_cast<QmlGraphicsItem *>(schild); + foreach(QmlGraphicsItem* child, children){ if (!child || isInvisible(child)) continue; bool needMove = (child->x()!=xoffset)||(child->y()!=yoffset); diff --git a/src/declarative/graphicsitems/qmlgraphicspositioners_p.h b/src/declarative/graphicsitems/qmlgraphicspositioners_p.h index 0011ec5..56adc8b 100644 --- a/src/declarative/graphicsitems/qmlgraphicspositioners_p.h +++ b/src/declarative/graphicsitems/qmlgraphicspositioners_p.h @@ -104,6 +104,7 @@ private Q_SLOTS: protected: QmlGraphicsBasePositioner(QmlGraphicsBasePositionerPrivate &dd, AutoUpdateType at, QmlGraphicsItem *parent); void setMovingItem(QmlGraphicsItem *); + QList<QmlGraphicsItem *> positionedItems; private: void applyTransition(const QList<QPair<QString, QVariant> >& changes, QmlGraphicsItem* target, |