aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/items/qquickitem_p.h
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2011-11-30 14:58:12 +1000
committerQt by Nokia <qt-info@nokia.com>2011-12-01 02:40:06 +0100
commit446547e8de1110148f214defa8584d847056388e (patch)
tree632c7d75239ef641a0f2fe550720a0240006c937 /src/declarative/items/qquickitem_p.h
parent5f5aba5b6e690ca54e66f41b93474f7e67e83c8b (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.h34
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();