summaryrefslogtreecommitdiffstats
path: root/src/gui/graphicsview/qgraphicsview.cpp
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-06-08 11:09:14 (GMT)
committerAndreas Aardal Hanssen <andreas.aardal.hanssen@nokia.com>2009-06-09 07:36:05 (GMT)
commit0095e40b2efc0c43c0d908bb5b9828619bc087e7 (patch)
tree95850288ca3b4171e400c57b5d703b17fafbeb67 /src/gui/graphicsview/qgraphicsview.cpp
parent9cafd6bcf6f91c027904c998a0dd536feac8d4e0 (diff)
downloadQt-0095e40b2efc0c43c0d908bb5b9828619bc087e7.zip
Qt-0095e40b2efc0c43c0d908bb5b9828619bc087e7.tar.gz
Qt-0095e40b2efc0c43c0d908bb5b9828619bc087e7.tar.bz2
QGraphicsItem discard updates when it shouldn't.
Once a _q_processDirtyItems call is queued, it means we at least have one item that is marked as dirty and we must reset it when the _q_processDirtyItems slot is called. The problem however, was that we didn't reset the item's dirty state if a full scene update occurred in between, i.e. item->update(); scene.update(); We don't have to calculate the item's dirty rect if a full scene update occurs in between, but we still have to reset its state. Auto-test included.
Diffstat (limited to 'src/gui/graphicsview/qgraphicsview.cpp')
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 87b5e3f..a9fc563 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -2496,6 +2496,7 @@ void QGraphicsView::updateScene(const QList<QRectF> &rects)
for (int i = 0; i < dirtyRects.size(); ++i)
dirtyViewportRects += dirtyRects.at(i);
d->dirtyRegion = QRegion();
+ d->dirtyBoundingRect = QRect();
bool fullUpdate = !d->accelerateScrolling || d->viewportUpdateMode == QGraphicsView::FullViewportUpdate;
bool boundingRectUpdate = (d->viewportUpdateMode == QGraphicsView::BoundingRectViewportUpdate)