diff options
author | Antti Kervinen <antti.kervinen@nokia.com> | 2010-09-08 15:09:26 +0300 |
---|---|---|
committer | Daniel d'Andrada <daniel.dandrada@nokia.com> | 2010-09-15 09:35:36 +0300 |
commit | f2d26be44103107f9dda3a3f740d8b43a6357fb0 (patch) | |
tree | e17d1eb3479e7b073974097b7855ca96794abb62 | |
parent | 9c97a8f71501df5005dece8c1280bcf9910b0e5f (diff) |
Fixes: NB#190565 - displayEntered can be received by application page without visible window
RevBy: Daniel d'Andrada
Details: MWidget::setVisible(true) fixed to check the visibility of
the widget by calling isOnDisplay(). This is a bit slower than the
previous implementation, but setVisible(true) is not called very
frequently. Test added to MWidget unit test.
-rw-r--r-- | src/corelib/widgets/core/mwidget.cpp | 6 | ||||
-rw-r--r-- | tests/ut_mwidget/ut_mwidget.cpp | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/corelib/widgets/core/mwidget.cpp b/src/corelib/widgets/core/mwidget.cpp index 917d7365..e498f1ac 100644 --- a/src/corelib/widgets/core/mwidget.cpp +++ b/src/corelib/widgets/core/mwidget.cpp @@ -503,7 +503,11 @@ void MWidget::setVisible(bool visible) // show() called: resolve visibility if (visible) { - d->resolveIsOnDisplay(this, &visibleSceneRect); + if (isOnDisplay()) { + MOnDisplayChangeEvent event(MOnDisplayChangeEvent::FullyOnDisplay, + visibleSceneRect); + d->resolveIsOnDisplay(this, &visibleSceneRect, &event); + } // hide() called: explicitly send FullyOffDisplay } else { MOnDisplayChangeEvent event(MOnDisplayChangeEvent::FullyOffDisplay, diff --git a/tests/ut_mwidget/ut_mwidget.cpp b/tests/ut_mwidget/ut_mwidget.cpp index b1359171..fe82cce4 100644 --- a/tests/ut_mwidget/ut_mwidget.cpp +++ b/tests/ut_mwidget/ut_mwidget.cpp @@ -200,6 +200,15 @@ void Ut_MWidget::testShowHideSimple() widget->hide(); QVERIFY(m_dummySlotCalled == true); disconnect(widget, SIGNAL(displayExited()), this, SLOT(dummySlot())); + + /* displayEntered() should not be emitted when show() is called + for an off-view widget */ + widget->setGeometry(-500, -500, 50, 50); + m_dummySlotCalled = false; + connect(widget, SIGNAL(displayEntered()), this, SLOT(dummySlot())); + widget->show(); + QVERIFY(m_dummySlotCalled == false); + disconnect(widget, SIGNAL(displayEntered()), this, SLOT(dummySlot())); } void Ut_MWidget::testShowHidePropagation() |