diff options
author | Antti Kervinen <antti.kervinen@nokia.com> | 2010-09-09 11:53:07 +0300 |
---|---|---|
committer | Daniel d'Andrada <daniel.dandrada@nokia.com> | 2010-09-15 10:12:39 +0300 |
commit | 9f01487c5d575d3d86bb918722d485c4319fe4b3 (patch) | |
tree | bc6fccb62a727623b8587d76732bb5ec8d873eba /src | |
parent | d9f0d764ecca60d3f000b23cc9c096a139f2fcaa (diff) |
Fixes: NB#190226 - MWidget::isOnDisplay() returns false even though application is visible on switcher
RevBy: Jussi Lind, Daniel d'Andrada
Details: Also fixes an issue with hidden (isVisible() == false)
widgets being able to receive displayExited().
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/widgets/core/mwidget.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/widgets/core/mwidget.cpp b/src/corelib/widgets/core/mwidget.cpp index e498f1ac..d8ba88eb 100644 --- a/src/corelib/widgets/core/mwidget.cpp +++ b/src/corelib/widgets/core/mwidget.cpp @@ -147,7 +147,6 @@ void MWidgetPrivate::resolveIsOnDisplay(QGraphicsItem *item, const QRectF *visib if (item->isWidget()) { mWidget = qobject_cast<MWidget *>(static_cast<QGraphicsWidget *>(item)); if (mWidget) { - // Check if event was defined explicitly. If so then send it, otherwise // let sendOnDisplayChangeEvent() resolve visibility and send // the corresponding event. @@ -195,7 +194,10 @@ void MWidget::onDisplayChangeEvent(MOnDisplayChangeEvent *event) switch (event->state()) { case MOnDisplayChangeEvent::FullyOnDisplay: case MOnDisplayChangeEvent::PartiallyOnDisplay: - if (!d->onDisplay || !d->onDisplaySet) { + // If the widget has not previously gotten enterDisplayEvent + // and it hasn't been hidden by hide() (setVisible(false)), + // consider this event as entering the display. + if ((!d->onDisplay || !d->onDisplaySet) && isVisible()) { d->doEnterDisplayEvent(); } break; @@ -256,7 +258,7 @@ bool MWidget::isOnDisplay() const graphicsView = viewsList.at(i); ++i; - if (!graphicsView->isVisible() || graphicsView->isMinimized()) { + if (!graphicsView->isVisible()) { continue; } @@ -419,7 +421,7 @@ bool MWidget::event(QEvent *event) return true; } break; - default: + default: if(type >= QEvent::User) { if (type == MCancelEvent::eventNumber()) cancelEvent((MCancelEvent *)event); |