diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2011-11-30 14:58:12 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-01 02:40:06 +0100 |
commit | 446547e8de1110148f214defa8584d847056388e (patch) | |
tree | 632c7d75239ef641a0f2fe550720a0240006c937 /src/declarative/items/qquickitem_p.h | |
parent | 5f5aba5b6e690ca54e66f41b93474f7e67e83c8b (diff) |
Cleanup and optimize QQuickContents.
Change-Id: I12e51b431a7568bc80d8200d1c619373a72521c0
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/declarative/items/qquickitem_p.h')
-rw-r--r-- | src/declarative/items/qquickitem_p.h | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/declarative/items/qquickitem_p.h b/src/declarative/items/qquickitem_p.h index e9ddae5f75..08ae7fac9b 100644 --- a/src/declarative/items/qquickitem_p.h +++ b/src/declarative/items/qquickitem_p.h @@ -84,33 +84,28 @@ class QNetworkReply; class QQuickItemKeyFilter; class QQuickLayoutMirroringAttached; -//### merge into private? -class QQuickContents : public QObject, public QQuickItemChangeListener +class QQuickContents : public QQuickItemChangeListener { - Q_OBJECT public: QQuickContents(QQuickItem *item); ~QQuickContents(); - QRectF rectF() const; - - void childRemoved(QQuickItem *item); - void childAdded(QQuickItem *item); + QRectF rectF() const { return QRectF(m_x, m_y, m_width, m_height); } - void calcGeometry() { calcWidth(); calcHeight(); } + inline void calcGeometry(QQuickItem *changed = 0); void complete(); -Q_SIGNALS: - void rectChanged(QRectF); - protected: void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry); void itemDestroyed(QQuickItem *item); + void itemChildAdded(QQuickItem *, QQuickItem *); + void itemChildRemoved(QQuickItem *, QQuickItem *); //void itemVisibilityChanged(QQuickItem *item) private: - void calcHeight(QQuickItem *changed = 0); - void calcWidth(QQuickItem *changed = 0); + bool calcHeight(QQuickItem *changed = 0); + bool calcWidth(QQuickItem *changed = 0); + void updateRect(); QQuickItem *m_item; qreal m_x; @@ -119,6 +114,14 @@ private: qreal m_height; }; +void QQuickContents::calcGeometry(QQuickItem *changed) +{ + bool wChanged = calcWidth(changed); + bool hChanged = calcHeight(changed); + if (wChanged || hChanged) + updateRect(); +} + class QQuickTransformPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QQuickTransform); @@ -342,6 +345,11 @@ public: return effectiveLayoutMirror; } + void emitChildrenRectChanged(const QRectF &rect) { + Q_Q(QQuickItem); + emit q->childrenRectChanged(rect); + } + QPointF computeTransformOrigin() const; QList<QQuickTransform *> transforms; virtual void transformChanged(); |