summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-09-01 13:52:27 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-09-01 13:52:27 (GMT)
commit6b779a021a9c3d334127a4c460ad7f780a97ddb9 (patch)
tree5b3a2b68d3c3cd176f1544a2615da3fe1cbe1859
parent8abc68d262c40c1f035a2d77779e76f038261a89 (diff)
downloadQt-6b779a021a9c3d334127a4c460ad7f780a97ddb9.zip
Qt-6b779a021a9c3d334127a4c460ad7f780a97ddb9.tar.gz
Qt-6b779a021a9c3d334127a4c460ad7f780a97ddb9.tar.bz2
Fix rounding bug in QGraphicsOpacityEffect.
The pixmap was painted at wrong offset.
-rw-r--r--src/gui/effects/qgraphicseffect.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gui/effects/qgraphicseffect.cpp b/src/gui/effects/qgraphicseffect.cpp
index 6624cfb..f60e80e 100644
--- a/src/gui/effects/qgraphicseffect.cpp
+++ b/src/gui/effects/qgraphicseffect.cpp
@@ -1129,19 +1129,20 @@ void QGraphicsOpacityEffect::draw(QPainter *painter, QGraphicsEffectSource *sour
const QPixmap pixmap = source->pixmap(Qt::LogicalCoordinates, &offset);
painter->drawPixmap(offset, pixmap);
} else {
- QRectF srcBrect = source->boundingRect();
- QPixmap pixmap(srcBrect.size().toSize());
+ QRect srcBrect = source->boundingRect().toAlignedRect();
+ offset = srcBrect.topLeft();
+ QPixmap pixmap(srcBrect.size());
pixmap.fill(Qt::transparent);
QPainter pixmapPainter(&pixmap);
pixmapPainter.setRenderHints(painter->renderHints());
- pixmapPainter.translate(-srcBrect.topLeft());
+ pixmapPainter.translate(-offset);
source->draw(&pixmapPainter);
pixmapPainter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
pixmapPainter.fillRect(srcBrect, d->opacityMask);
pixmapPainter.end();
- painter->drawPixmap(srcBrect.topLeft(), pixmap);
+ painter->drawPixmap(offset, pixmap);
}
} else {
// Draw pixmap in device coordinates to avoid pixmap scaling;