summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-08-03 10:56:55 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-08-04 09:02:50 (GMT)
commit1c114fe03a6af18060529fe0604acf89dc595bcb (patch)
tree94a468522800b30cc8d3360b84ad7d3c86bdd5d2 /src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
parent3fcc03fb2d4b629fb7f0a72a6aa45916086c6d06 (diff)
downloadQt-1c114fe03a6af18060529fe0604acf89dc595bcb.zip
Qt-1c114fe03a6af18060529fe0604acf89dc595bcb.tar.gz
Qt-1c114fe03a6af18060529fe0604acf89dc595bcb.tar.bz2
Artifacts when moving a child when the parent has a graphics effect.
We have to use the effectiveBoundingRect() when finding out which items to repaint within a specific area. However, we don't want items to be clickable on the shadow, so we shouldn't use effectiveBoundingRect for normal item-lookup. Solution to this is to only use effectiveBoundingRect() in the BSP (used by estimateTopLevels) and in drawSubtreeRecursive. Auto-test included.
Diffstat (limited to 'src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp')
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
index 3cb33d1..78a77aa 100644
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -173,7 +173,7 @@ void QGraphicsSceneBspTreeIndexPrivate::_q_updateIndex()
if (item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren)
continue;
- bsp.insertItem(item, item->sceneBoundingRect());
+ bsp.insertItem(item, item->sceneEffectiveBoundingRect());
}
}
unindexedItems.clear();
@@ -353,7 +353,7 @@ void QGraphicsSceneBspTreeIndexPrivate::removeItem(QGraphicsItem *item, bool rec
purgePending = true;
removedItems << item;
} else if (!(item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren)) {
- bsp.removeItem(item, item->sceneBoundingRect());
+ bsp.removeItem(item, item->sceneEffectiveBoundingRect());
}
} else {
unindexedItems.removeOne(item);