diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-06-12 12:35:46 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-06-12 12:35:46 (GMT) |
commit | c53414e11b3f980f81a4470b3fb52f9d1aa80d56 (patch) | |
tree | 7d51540148af638b1c4fb7cda939d34739245457 /tests/auto/qgraphicsitem | |
parent | f2b93868f48a3e2d6e462ca8a051ab47eefef49d (diff) | |
parent | 304bf2ef0a99882d2d969347f85a330523086fb3 (diff) | |
download | Qt-c53414e11b3f980f81a4470b3fb52f9d1aa80d56.zip Qt-c53414e11b3f980f81a4470b3fb52f9d1aa80d56.tar.gz Qt-c53414e11b3f980f81a4470b3fb52f9d1aa80d56.tar.bz2 |
Merge commit 'origin/4.5'
Conflicts:
demos/boxes/glshaders.cpp
src/gui/graphicsview/qgraphicsitem.cpp
tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
tools/linguist/shared/cpp.cpp
translations/linguist_ja.qm
translations/qt_ru.qm
Diffstat (limited to 'tests/auto/qgraphicsitem')
-rw-r--r-- | tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 481dc6b..d2a059a 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -210,6 +210,7 @@ private slots: void opacity_data(); void opacity(); void opacity2(); + void opacityZeroUpdates(); void itemStacksBehindParent(); void nestedClipping(); void nestedClippingTransforms(); @@ -5798,6 +5799,54 @@ void tst_QGraphicsItem::opacity2() QCOMPARE(grandChild->repaints, 0); } +void tst_QGraphicsItem::opacityZeroUpdates() +{ + EventTester *parent = new EventTester; + EventTester *child = new EventTester(parent); + + child->setPos(10, 10); + + QGraphicsScene scene; + scene.addItem(parent); + + class MyGraphicsView : public QGraphicsView + { public: + int repaints; + QRegion paintedRegion; + MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {} + void paintEvent(QPaintEvent *e) + { + ++repaints; + paintedRegion += e->region(); + QGraphicsView::paintEvent(e); + } + void reset() { repaints = 0; paintedRegion = QRegion(); } + }; + + MyGraphicsView view(&scene); + view.show(); +#ifdef Q_WS_X11 + qt_x11_wait_for_window_manager(&view); +#endif + QTest::qWait(250); + + view.reset(); + parent->setOpacity(0.0); + + QTest::qWait(200); + + // transforming items bounding rect to view coordinates + const QRect childDeviceBoundingRect = child->deviceTransform(view.viewportTransform()) + .mapRect(child->boundingRect()).toRect(); + const QRect parentDeviceBoundingRect = parent->deviceTransform(view.viewportTransform()) + .mapRect(parent->boundingRect()).toRect(); + + QRegion expectedRegion = parentDeviceBoundingRect.adjusted(-2, -2, 2, 2); + expectedRegion += childDeviceBoundingRect.adjusted(-2, -2, 2, 2); + + QCOMPARE(view.paintedRegion, expectedRegion); +} + class StacksBehindParentHelper : public QGraphicsRectItem { public: |