summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-16 16:03:13 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-16 16:28:11 +0200
commit8493f5d6a343c9a754ce439fed77c7e1a901747e (patch)
treefbf052be406a3d73b757eb65da83761f5edc9225 /src
parent4315f270e6d553f0c6537617b8efff8988f1f083 (diff)
Detect popup window correctly in modal window blocked handling.
Task-number: QTBUG-32433 Change-Id: Ida8f6237a383311bc2e231de90fd54b90ebd1508 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qguiapplication.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 901f47c584..bf8440cccf 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -210,6 +210,11 @@ static inline void clearFontUnlocked()
QGuiApplicationPrivate::app_font = 0;
}
+static inline bool isPopupWindow(const QWindow *w)
+{
+ return (w->flags() & Qt::WindowType_Mask) == Qt::Popup;
+}
+
/*!
\class QGuiApplication
\brief The QGuiApplication class manages the GUI application's control
@@ -493,7 +498,7 @@ static void updateBlockedStatusRecursion(QWindow *window, bool shouldBeBlocked)
void QGuiApplicationPrivate::updateBlockedStatus(QWindow *window)
{
bool shouldBeBlocked = false;
- if ((window->type() & Qt::Popup) != Qt::Popup && !self->modalWindowList.isEmpty())
+ if (!isPopupWindow(window) && !self->modalWindowList.isEmpty())
shouldBeBlocked = self->isWindowBlocked(window);
updateBlockedStatusRecursion(window, shouldBeBlocked);
}
@@ -503,7 +508,7 @@ void QGuiApplicationPrivate::showModalWindow(QWindow *modal)
self->modalWindowList.prepend(modal);
// Send leave for currently entered window if it should be blocked
- if (currentMouseWindow && (currentMouseWindow->type() & Qt::Popup) != Qt::Popup) {
+ if (currentMouseWindow && !isPopupWindow(currentMouseWindow)) {
bool shouldBeBlocked = self->isWindowBlocked(currentMouseWindow);
if (shouldBeBlocked) {
// Remove the new window from modalWindowList temporarily so leave can go through