diff options
Diffstat (limited to 'src/widgets/dialogs/qmessagebox.cpp')
-rw-r--r-- | src/widgets/dialogs/qmessagebox.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index d1af4b2842..4b20a183ce 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -1556,6 +1556,23 @@ void QMessageBox::open(QObject *receiver, const char *member) QDialog::open(); } +void QMessageBox::setVisible(bool visible) +{ + if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden) != visible) + return; + + Q_D(QMessageBox); + if (d->canBeNativeDialog()) + d->setNativeDialogVisible(visible); + + // Update WA_DontShowOnScreen based on whether the native dialog was shown, + // so that QDialog::setVisible(visible) below updates the QWidget state correctly, + // but skips showing the non-native version. + setAttribute(Qt::WA_DontShowOnScreen, d->nativeDialogInUse); + + QDialog::setVisible(visible); +} + /*! \since 4.5 |