diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2010-03-03 14:54:54 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2010-03-03 15:28:18 (GMT) |
commit | 13e08bb43bc7c972e77fc7b77ae5de14235cb897 (patch) | |
tree | 2cff57d81cce73f775780cf72591597386802727 /tests | |
parent | 57b6629507e97c63cf2445eef12443dcb2639887 (diff) | |
download | Qt-13e08bb43bc7c972e77fc7b77ae5de14235cb897.zip Qt-13e08bb43bc7c972e77fc7b77ae5de14235cb897.tar.gz Qt-13e08bb43bc7c972e77fc7b77ae5de14235cb897.tar.bz2 |
Fixes wrong composition mode for cached backgrounds in Graphics View.
This change partially reverts commit a589005f and therefore fully reverts
68be6457. We cannot assume that only opaque pixels are painted in
drawBackground().
Regression against 4.5. Auto-test included.
Task-number: QTBUG-8168
Reviewed-by: trond
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qgraphicsview/tst_qgraphicsview.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index c77f76d..1c19fab 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -219,6 +219,7 @@ private slots: void inputMethodSensitivity(); void inputContextReset(); void indirectPainting(); + void compositionModeInDrawBackground(); // task specific tests below me void task172231_untransformableItems(); @@ -3825,6 +3826,39 @@ void tst_QGraphicsView::indirectPainting() QTRY_VERIFY(scene.drawCount > 0); } +void tst_QGraphicsView::compositionModeInDrawBackground() +{ + class MyView : public QGraphicsView + { public: + MyView(QGraphicsScene *scene) : QGraphicsView(scene), + painted(false), compositionMode(QPainter::CompositionMode_SourceOver) {} + bool painted; + QPainter::CompositionMode compositionMode; + void drawBackground(QPainter *painter, const QRectF &) + { + compositionMode = painter->compositionMode(); + painted = true; + } + }; + + QGraphicsScene dummy; + MyView view(&dummy); + view.show(); + QTest::qWaitForWindowShown(&view); + + // Make sure the painter's composition mode is SourceOver in drawBackground. + QTRY_VERIFY(view.painted); + QCOMPARE(view.compositionMode, QPainter::CompositionMode_SourceOver); + + view.painted = false; + view.setCacheMode(QGraphicsView::CacheBackground); + view.viewport()->update(); + + // Make sure the painter's composition mode is SourceOver in drawBackground + // with background cache enabled. + QTRY_VERIFY(view.painted); + QCOMPARE(view.compositionMode, QPainter::CompositionMode_SourceOver); +} void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged() { QGraphicsView view; |