aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntti Kervinen <antti.kervinen@nokia.com>2010-09-09 11:53:07 +0300
committerDaniel d'Andrada <daniel.dandrada@nokia.com>2010-09-15 10:12:39 +0300
commit9f01487c5d575d3d86bb918722d485c4319fe4b3 (patch)
treebc6fccb62a727623b8587d76732bb5ec8d873eba /src
parentd9f0d764ecca60d3f000b23cc9c096a139f2fcaa (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.cpp10
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);