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>
This commit is contained in:
Alan Alpert 2011-07-28 15:36:44 +10:00 committed by Qt by Nokia
parent e57189d3bb
commit 31ebb4bfb0
4 changed files with 5 additions and 4 deletions

View File

@ -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();
}

View File

@ -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);

View File

@ -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;

View File

@ -160,7 +160,7 @@ public:
qreal radius() const;
void setRadius(qreal radius);
QRectF boundingRect() const;
virtual QRectF boundingRect() const;
Q_SIGNALS:
void colorChanged();