275 item->reset(); |
275 item->reset(); |
276 |
276 |
277 // Make sure installing the effect triggers a repaint. |
277 // Make sure installing the effect triggers a repaint. |
278 CustomEffect *effect = new CustomEffect; |
278 CustomEffect *effect = new CustomEffect; |
279 item->setGraphicsEffect(effect); |
279 item->setGraphicsEffect(effect); |
280 QTest::qWait(50); |
280 QTRY_COMPARE(effect->numRepaints, 1); |
281 QCOMPARE(effect->numRepaints, 1); |
281 QTRY_COMPARE(item->numRepaints, 1); |
282 QCOMPARE(item->numRepaints, 1); |
|
283 |
282 |
284 // Make sure QPainter* and QStyleOptionGraphicsItem* stays persistent |
283 // Make sure QPainter* and QStyleOptionGraphicsItem* stays persistent |
285 // during QGraphicsEffect::draw/QGraphicsItem::paint. |
284 // during QGraphicsEffect::draw/QGraphicsItem::paint. |
286 QVERIFY(effect->m_painter); |
285 QVERIFY(effect->m_painter); |
287 QCOMPARE(effect->m_painter, item->m_painter); |
286 QCOMPARE(effect->m_painter, item->m_painter); |
291 effect->reset(); |
290 effect->reset(); |
292 item->reset(); |
291 item->reset(); |
293 |
292 |
294 // Make sure updating the source triggers a repaint. |
293 // Make sure updating the source triggers a repaint. |
295 item->update(); |
294 item->update(); |
296 QTest::qWait(50); |
295 QTRY_COMPARE(effect->numRepaints, 1); |
297 QCOMPARE(effect->numRepaints, 1); |
296 QTRY_COMPARE(item->numRepaints, 1); |
298 QCOMPARE(item->numRepaints, 1); |
|
299 QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceInvalidated); |
297 QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceInvalidated); |
300 effect->reset(); |
298 effect->reset(); |
301 item->reset(); |
299 item->reset(); |
302 |
300 |
303 // Make sure changing the effect's bounding rect triggers a repaint. |
301 // Make sure changing the effect's bounding rect triggers a repaint. |
304 effect->setMargin(20); |
302 effect->setMargin(20); |
305 QTest::qWait(50); |
303 QTRY_COMPARE(effect->numRepaints, 1); |
306 QCOMPARE(effect->numRepaints, 1); |
304 QTRY_COMPARE(item->numRepaints, 1); |
307 QCOMPARE(item->numRepaints, 1); |
|
308 effect->reset(); |
305 effect->reset(); |
309 item->reset(); |
306 item->reset(); |
310 |
307 |
311 // Make sure change the item's bounding rect triggers a repaint. |
308 // Make sure change the item's bounding rect triggers a repaint. |
312 item->setRect(0, 0, 50, 50); |
309 item->setRect(0, 0, 50, 50); |
313 QTest::qWait(50); |
310 QTRY_COMPARE(effect->numRepaints, 1); |
314 QCOMPARE(effect->numRepaints, 1); |
311 QTRY_COMPARE(item->numRepaints, 1); |
315 QCOMPARE(item->numRepaints, 1); |
|
316 QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceBoundingRectChanged); |
312 QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceBoundingRectChanged); |
317 effect->reset(); |
313 effect->reset(); |
318 item->reset(); |
314 item->reset(); |
319 |
315 |
320 // Make sure the effect is the one to issue a repaint of the item. |
316 // Make sure the effect is the one to issue a repaint of the item. |
321 effect->doNothingInDraw = true; |
317 effect->doNothingInDraw = true; |
322 item->update(); |
318 item->update(); |
323 QTest::qWait(50); |
319 QTRY_COMPARE(effect->numRepaints, 1); |
324 QCOMPARE(effect->numRepaints, 1); |
|
325 QCOMPARE(item->numRepaints, 0); |
320 QCOMPARE(item->numRepaints, 0); |
326 effect->doNothingInDraw = false; |
321 effect->doNothingInDraw = false; |
327 effect->reset(); |
322 effect->reset(); |
328 item->reset(); |
323 item->reset(); |
329 |
324 |
334 QCOMPARE(item->numRepaints, 1); |
329 QCOMPARE(item->numRepaints, 1); |
335 effect->reset(); |
330 effect->reset(); |
336 item->reset(); |
331 item->reset(); |
337 |
332 |
338 effect->setEnabled(true); |
333 effect->setEnabled(true); |
339 QTest::qWait(50); |
334 QTRY_COMPARE(effect->numRepaints, 1); |
340 QCOMPARE(effect->numRepaints, 1); |
335 QTRY_COMPARE(item->numRepaints, 1); |
341 QCOMPARE(item->numRepaints, 1); |
|
342 effect->reset(); |
336 effect->reset(); |
343 item->reset(); |
337 item->reset(); |
344 |
338 |
345 // Effect is already enabled; nothing should happen. |
339 // Effect is already enabled; nothing should happen. |
346 effect->setEnabled(true); |
340 effect->setEnabled(true); |
350 |
344 |
351 // Make sure uninstalling an effect triggers a repaint. |
345 // Make sure uninstalling an effect triggers a repaint. |
352 QPointer<CustomEffect> ptr = effect; |
346 QPointer<CustomEffect> ptr = effect; |
353 item->setGraphicsEffect(0); |
347 item->setGraphicsEffect(0); |
354 QVERIFY(!ptr); |
348 QVERIFY(!ptr); |
355 QTest::qWait(50); |
349 QTRY_COMPARE(item->numRepaints, 1); |
356 QCOMPARE(item->numRepaints, 1); |
|
357 } |
350 } |
358 |
351 |
359 void tst_QGraphicsEffect::opacity() |
352 void tst_QGraphicsEffect::opacity() |
360 { |
353 { |
361 // Make sure the painter's opacity is correct in QGraphicsEffect::draw. |
354 // Make sure the painter's opacity is correct in QGraphicsEffect::draw. |
558 |
550 |
559 QTRY_VERIFY(item->numRepaints >= 1); |
551 QTRY_VERIFY(item->numRepaints >= 1); |
560 int numRepaints = item->numRepaints; |
552 int numRepaints = item->numRepaints; |
561 |
553 |
562 item->translate(10, 0); |
554 item->translate(10, 0); |
563 QTest::qWait(50); |
555 |
564 |
556 QTRY_VERIFY(item->numRepaints == numRepaints); |
565 QVERIFY(item->numRepaints == numRepaints); |
|
566 } |
557 } |
567 |
558 |
568 void tst_QGraphicsEffect::inheritOpacity() |
559 void tst_QGraphicsEffect::inheritOpacity() |
569 { |
560 { |
570 QGraphicsScene scene; |
561 QGraphicsScene scene; |
586 QTRY_VERIFY(item->numRepaints >= 1); |
577 QTRY_VERIFY(item->numRepaints >= 1); |
587 |
578 |
588 int numRepaints = item->numRepaints; |
579 int numRepaints = item->numRepaints; |
589 |
580 |
590 rectItem->setOpacity(1); |
581 rectItem->setOpacity(1); |
591 QTest::qWait(50); |
|
592 |
582 |
593 // item should have been rerendered due to opacity changing |
583 // item should have been rerendered due to opacity changing |
594 QTRY_VERIFY(item->numRepaints > numRepaints); |
584 QTRY_VERIFY(item->numRepaints > numRepaints); |
595 } |
585 } |
596 |
586 |