diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2010-02-23 14:56:28 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2010-02-23 16:27:26 (GMT) |
commit | f0076dfed6543c622418359b3c217c171249cfb3 (patch) | |
tree | 68b0029ed13346b422b10e7062b27bb4066595bf /src/gui | |
parent | 510cb9e5b2c4702753685d59f10bb0464b7d9991 (diff) | |
download | Qt-f0076dfed6543c622418359b3c217c171249cfb3.zip Qt-f0076dfed6543c622418359b3c217c171249cfb3.tar.gz Qt-f0076dfed6543c622418359b3c217c171249cfb3.tar.bz2 |
Regression: QGraphicsScene::render fails to render the entire scene correctly.
This only happened with items that had either negative width or height
(boundingRect().width()|height()). Problem was that in case of not having
an exposed region (drawing items from QGraphicsScene::render), we simply
checked whether the bounding rect was empty or not. This is fine, however
we have to normalize the rect first.
(Note that QRegion::intersects(rect) always normalizes the rect, so
that's why this use case broke only when calling QGraphicsScene::render).
Auto-test included.
Task-number: QTBUG-7775
Reviewed-by: yoann
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/graphicsview/qgraphicsscene.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 4472272..43fa24a 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -4678,7 +4678,8 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter * if (widget) item->d_ptr->paintedViewBoundingRects.insert(widget, viewBoundingRect); viewBoundingRect.adjust(-1, -1, 1, 1); - drawItem = exposedRegion ? exposedRegion->intersects(viewBoundingRect) : !viewBoundingRect.isEmpty(); + drawItem = exposedRegion ? exposedRegion->intersects(viewBoundingRect) + : !viewBoundingRect.normalized().isEmpty(); if (!drawItem) { if (!itemHasChildren) return; |