diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-07-16 13:11:06 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-16 16:28:11 +0200 |
commit | aab50ad061dfaff7a0a30a4164163fdd41571270 (patch) | |
tree | 8d8f9d10a7707e72e5e2815090ae05281ba136d6 /src | |
parent | e89547fff44b5558039c04397d7dc8a03cd504e3 (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.cpp | 21 |
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) |