diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2011-07-28 15:36:44 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-28 11:27:26 +0200 |
commit | 31ebb4bfb0df83805c5d86b6773f11ba1145c7cd (patch) | |
tree | b524b5356eaa555ebd99524296df5d06425a0666 /src/declarative | |
parent | e57189d3bbac058a3ddea567a6e487be65cdde5a (diff) |
Clip to bounding rect
Bounding rect varies from width/height in some cases, like Rectangle.
This restores rectangle clipping behaviour to be the same as QtQuick 1.
Task-number: QTBUG-20547
Change-Id: I2b6edc662a0026219d73b52878d2f4c046fef7f0
Reviewed-on: http://codereview.qt.nokia.com/2317
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/items/qsgcanvas.cpp | 4 | ||||
-rw-r--r-- | src/declarative/items/qsgitem.cpp | 1 | ||||
-rw-r--r-- | src/declarative/items/qsgitem.h | 2 | ||||
-rw-r--r-- | src/declarative/items/qsgrectangle_p.h | 2 |
4 files changed, 5 insertions, 4 deletions
diff --git a/src/declarative/items/qsgcanvas.cpp b/src/declarative/items/qsgcanvas.cpp index 38b5da6eb9..ecb4e2b524 100644 --- a/src/declarative/items/qsgcanvas.cpp +++ b/src/declarative/items/qsgcanvas.cpp @@ -1703,7 +1703,7 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) if (item->clip()) { Q_ASSERT(itemPriv->clipNode == 0); - itemPriv->clipNode = new QSGDefaultClipNode(QRectF(0, 0, itemPriv->width, itemPriv->height)); + itemPriv->clipNode = new QSGDefaultClipNode(item->boundingRect()); if (child) parent->removeChildNode(child); @@ -1789,7 +1789,7 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) } if ((dirty & QSGItemPrivate::Size || clipEffectivelyChanged) && itemPriv->clipNode) { - itemPriv->clipNode->setRect(QRectF(0, 0, itemPriv->width, itemPriv->height)); + itemPriv->clipNode->setRect(item->boundingRect()); itemPriv->clipNode->update(); } diff --git a/src/declarative/items/qsgitem.cpp b/src/declarative/items/qsgitem.cpp index dea0286c0f..55d84a7fa5 100644 --- a/src/declarative/items/qsgitem.cpp +++ b/src/declarative/items/qsgitem.cpp @@ -2227,6 +2227,7 @@ void QSGItem::itemChange(ItemChange change, const ItemChangeData &value) /*! \internal */ // XXX todo - do we want/need this anymore? +// Note that it's now used for varying clip rect QRectF QSGItem::boundingRect() const { Q_D(const QSGItem); diff --git a/src/declarative/items/qsgitem.h b/src/declarative/items/qsgitem.h index 12e93603c7..2cd2082acd 100644 --- a/src/declarative/items/qsgitem.h +++ b/src/declarative/items/qsgitem.h @@ -256,7 +256,7 @@ public: void setFlag(Flag flag, bool enabled = true); void setFlags(Flags flags); - QRectF boundingRect() const; + virtual QRectF boundingRect() const; bool hasActiveFocus() const; bool hasFocus() const; diff --git a/src/declarative/items/qsgrectangle_p.h b/src/declarative/items/qsgrectangle_p.h index 4f8999676a..4d93e6662a 100644 --- a/src/declarative/items/qsgrectangle_p.h +++ b/src/declarative/items/qsgrectangle_p.h @@ -160,7 +160,7 @@ public: qreal radius() const; void setRadius(qreal radius); - QRectF boundingRect() const; + virtual QRectF boundingRect() const; Q_SIGNALS: void colorChanged(); |