diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-11-04 09:27:21 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-11-04 13:43:29 +0000 |
commit | 3dbdc367ffa50b1482d037c956336c809e53a0e6 (patch) | |
tree | 0b881c41590cc5cb9ca111e182147af787f58b1f /src | |
parent | 1c01cfa07734a299ed5f4c3489b140009a7cad45 (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')
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 10 |
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 |