summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-16 13:11:06 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-16 16:28:11 +0200
commitaab50ad061dfaff7a0a30a4164163fdd41571270 (patch)
tree8d8f9d10a7707e72e5e2815090ae05281ba136d6 /src
parente89547fff44b5558039c04397d7dc8a03cd504e3 (diff)
QGuiApplicationPrivate::updateBlockedStatus(): Recurse over children.
Task-number: QTBUG-32242 Change-Id: Ia43257a998507b9a367f41dc2395ab92cc89a118 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qguiapplication.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 118b481fa3..901f47c584 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -477,18 +477,25 @@ QWindow *QGuiApplication::modalWindow()
return QGuiApplicationPrivate::self->modalWindowList.first();
}
+static void updateBlockedStatusRecursion(QWindow *window, bool shouldBeBlocked)
+{
+ QWindowPrivate *p = qt_window_private(window);
+ if (p->blockedByModalWindow != shouldBeBlocked) {
+ p->blockedByModalWindow = shouldBeBlocked;
+ QEvent e(shouldBeBlocked ? QEvent::WindowBlocked : QEvent::WindowUnblocked);
+ QGuiApplication::sendEvent(window, &e);
+ foreach (QObject *c, window->children())
+ if (c->isWindowType())
+ updateBlockedStatusRecursion(static_cast<QWindow *>(c), shouldBeBlocked);
+ }
+}
+
void QGuiApplicationPrivate::updateBlockedStatus(QWindow *window)
{
bool shouldBeBlocked = false;
if ((window->type() & Qt::Popup) != Qt::Popup && !self->modalWindowList.isEmpty())
shouldBeBlocked = self->isWindowBlocked(window);
-
- if (shouldBeBlocked != window->d_func()->blockedByModalWindow) {
- QEvent e(shouldBeBlocked ? QEvent::WindowBlocked : QEvent::WindowUnblocked);
-
- window->d_func()->blockedByModalWindow = shouldBeBlocked;
- QGuiApplication::sendEvent(window, &e);
- }
+ updateBlockedStatusRecursion(window, shouldBeBlocked);
}
void QGuiApplicationPrivate::showModalWindow(QWindow *modal)