summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidget.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-11-04 09:27:21 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-11-04 13:43:29 +0000
commit3dbdc367ffa50b1482d037c956336c809e53a0e6 (patch)
tree0b881c41590cc5cb9ca111e182147af787f58b1f /src/widgets/kernel/qwidget.cpp
parent1c01cfa07734a299ed5f4c3489b140009a7cad45 (diff)
Suppress the modal window handling for dialogs embedded into QGraphicsView.
A dialog embedded into QGraphicsView has Qt::WA_DontShowOnScreen set (similar to a native dialog). It must not trigger the modal handling though as not to lock up. Task-number: QTBUG-49124 Change-Id: I22ce3f18d01df017b9317666770686bd4491387f Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Diffstat (limited to 'src/widgets/kernel/qwidget.cpp')
-rw-r--r--src/widgets/kernel/qwidget.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 4286130521..029f0f3425 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -7876,8 +7876,9 @@ void QWidgetPrivate::show_sys()
if (q->testAttribute(Qt::WA_DontShowOnScreen)) {
invalidateBuffer(q->rect());
q->setAttribute(Qt::WA_Mapped);
- if (q->isWindow() && q->windowModality() != Qt::NonModal && window) {
- // add our window to the modal window list
+ // add our window the modal window list (native dialogs)
+ if ((q->isWindow() && (!extra || !extra->proxyWidget))
+ && q->windowModality() != Qt::NonModal && window) {
QGuiApplicationPrivate::showModalWindow(window);
}
return;
@@ -8008,8 +8009,9 @@ void QWidgetPrivate::hide_sys()
if (q->testAttribute(Qt::WA_DontShowOnScreen)) {
q->setAttribute(Qt::WA_Mapped, false);
- if (q->isWindow() && q->windowModality() != Qt::NonModal && window) {
- // remove our window from the modal window list
+ // remove our window from the modal window list (native dialogs)
+ if ((q->isWindow() && (!extra || !extra->proxyWidget))
+ && q->windowModality() != Qt::NonModal && window) {
QGuiApplicationPrivate::hideModalWindow(window);
}
// do not return here, if window non-zero, we must hide it