aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2011-07-28 15:36:44 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-28 11:27:26 +0200
commit31ebb4bfb0df83805c5d86b6773f11ba1145c7cd (patch)
treeb524b5356eaa555ebd99524296df5d06425a0666 /src/declarative
parente57189d3bbac058a3ddea567a6e487be65cdde5a (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.cpp4
-rw-r--r--src/declarative/items/qsgitem.cpp1
-rw-r--r--src/declarative/items/qsgitem.h2
-rw-r--r--src/declarative/items/qsgrectangle_p.h2
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();