diff options
Diffstat (limited to 'src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h')
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h b/src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h index 63c1c83..55a31c7 100644 --- a/src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h +++ b/src/declarative/graphicsitems/qmlgraphicspositioners_p_p.h @@ -64,9 +64,10 @@ #include <QtCore/QObject> #include <QtCore/QString> #include <QtCore/QTimer> +#include <QDebug> QT_BEGIN_NAMESPACE -class QmlGraphicsBasePositionerPrivate : public QmlGraphicsItemPrivate, public QmlGraphicsItemGeometryListener +class QmlGraphicsBasePositionerPrivate : public QmlGraphicsItemPrivate, public QmlGraphicsItemChangeListener { Q_DECLARE_PUBLIC(QmlGraphicsBasePositioner) @@ -77,29 +78,15 @@ public: { } - ~QmlGraphicsBasePositionerPrivate() - { - watched.removeAll(0); - foreach(QmlGraphicsItem* other, watched) - unwatchChanges(other);//Need to deregister from a list in QmlGI Private - } - void init(QmlGraphicsBasePositioner::PositionerType at) { type = at; - if (prePosIdx == -1) { - prePosIdx = QmlGraphicsBasePositioner::staticMetaObject.indexOfSlot("prePositioning()"); - visibleIdx = QmlGraphicsItem::staticMetaObject.indexOfSignal("visibleChanged()"); - opacityIdx = QmlGraphicsItem::staticMetaObject.indexOfSignal("opacityChanged()"); - } } int spacing; QmlGraphicsBasePositioner::PositionerType type; QmlTransition *moveTransition; QmlTransition *addTransition; - QSet<QmlGraphicsItem *> items; - QSet<QmlGraphicsItem *> newItems; QmlStateOperation::ActionList addActions; QmlStateOperation::ActionList moveActions; QmlTransitionManager addTransitionManager; @@ -107,14 +94,9 @@ public: void watchChanges(QmlGraphicsItem *other); void unwatchChanges(QmlGraphicsItem* other); - QList<QGuard<QmlGraphicsItem> > watched;//Can't have QSet and QGuard at the same time? bool queuedPositioning; - static int prePosIdx; - static int visibleIdx; - static int opacityIdx; - - virtual void otherSiblingOrderChange(QmlGraphicsItemPrivate* other) + virtual void itemSiblingOrderChanged(QmlGraphicsItem* other) { Q_Q(QmlGraphicsBasePositioner); Q_UNUSED(other); @@ -132,6 +114,22 @@ public: if (newGeometry.size() != oldGeometry.size()) q->prePositioning(); } + virtual void itemVisibilityChanged(QmlGraphicsItem *) + { + Q_Q(QmlGraphicsBasePositioner); + q->prePositioning(); + } + virtual void itemOpacityChanged(QmlGraphicsItem *) + { + Q_Q(QmlGraphicsBasePositioner); + q->prePositioning(); + } + + void itemDestroyed(QmlGraphicsItem *item) + { + Q_Q(QmlGraphicsBasePositioner); + q->positionedItems.removeOne(QmlGraphicsBasePositioner::PositionedItem(item)); + } }; QT_END_NAMESPACE |