summaryrefslogtreecommitdiffstats
path: root/src/declarative/canvas/qsimplecanvasitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/canvas/qsimplecanvasitem.cpp')
-rw-r--r--src/declarative/canvas/qsimplecanvasitem.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/declarative/canvas/qsimplecanvasitem.cpp b/src/declarative/canvas/qsimplecanvasitem.cpp
index 5e4b5fa..95f7623 100644
--- a/src/declarative/canvas/qsimplecanvasitem.cpp
+++ b/src/declarative/canvas/qsimplecanvasitem.cpp
@@ -443,7 +443,16 @@ void QSimpleCanvasItem::setZ(qreal z)
return;
if(d->graphicsItem) {
+
+ if(z < 0)
+ d->graphicsItem->setFlag(QGraphicsItem::ItemStacksBehindParent,
+ true);
+ else
+ d->graphicsItem->setFlag(QGraphicsItem::ItemStacksBehindParent,
+ false);
+
d->graphicsItem->setZValue(z);
+
} else {
if(d->data()->z == z)
return;
@@ -626,12 +635,8 @@ void QSimpleCanvasItem::addChild(QSimpleCanvasItem *c)
{
Q_D(QSimpleCanvasItem);
d->children.append(c);
- if(d->graphicsItem) {
- // XXX - GraphicsView does not preserve the stacking order of items
- c->setZ(d->children.count());
- } else {
+ if(!d->graphicsItem)
d->needsZOrder = true;
- }
childrenChanged();
}