diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-10-20 18:33:05 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2023-10-23 19:42:46 +0200 |
commit | 92194ac571cb70c796101d1daa2e4bed214a439b (patch) | |
tree | 560f633114665216cdc52c5bd973b5de48274047 /src/widgets/dialogs | |
parent | c0f13eeb99e58c71c685d4c2d2932f300d69fb26 (diff) |
Unify QDialog WA_WState_ExplicitShowHide handling
Instead of checking it inside QDialogPrivate::setVisible and its
overrides, we can check it in QDialog::setVisible, up front.
The logic in QDialogPrivate::setVisible related to modality that
was executed prior to the WA_WState_ExplicitShowHide is now skipped
in the case the WA_WState_ExplicitShowHide condition hits, but this
makes sense as the modality logic has a second part at the end
of the function, restoring the modality, and this part was never
executed as the code was prior to this change.
Change-Id: I9580e91dbc5a981c83538d765b86138afee44f14
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/qcolordialog.cpp | 5 | ||||
-rw-r--r-- | src/widgets/dialogs/qdialog.cpp | 9 | ||||
-rw-r--r-- | src/widgets/dialogs/qerrormessage.cpp | 2 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 5 | ||||
-rw-r--r-- | src/widgets/dialogs/qfontdialog.cpp | 3 | ||||
-rw-r--r-- | src/widgets/dialogs/qmessagebox.cpp | 2 |
6 files changed, 5 insertions, 21 deletions
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index d31e54bc94..c4917b65a2 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -2156,11 +2156,6 @@ void QColorDialog::setVisible(bool visible) void QColorDialogPrivate::setVisible(bool visible) { Q_Q(QColorDialog); - if (visible){ - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && !q->testAttribute(Qt::WA_WState_Hidden)) - return; - } else if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden)) - return; if (visible) selectedQColor = QColor(); diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp index a4c9813965..16730ed2c4 100644 --- a/src/widgets/dialogs/qdialog.cpp +++ b/src/widgets/dialogs/qdialog.cpp @@ -740,6 +740,10 @@ void QDialog::closeEvent(QCloseEvent *e) void QDialog::setVisible(bool visible) { Q_D(QDialog); + + if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden) != visible) + return; + d->setVisible(visible); } @@ -764,9 +768,6 @@ void QDialogPrivate::setVisible(bool visible) } if (visible) { - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && !q->testAttribute(Qt::WA_WState_Hidden)) - return; - q->QWidget::setVisible(visible); // Window activation might be prevented. We can't test isActiveWindow here, @@ -817,8 +818,6 @@ void QDialogPrivate::setVisible(bool visible) #endif } else { - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden)) - return; #if QT_CONFIG(accessibility) if (q->isVisible()) { diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp index 06b99bb296..ed51480991 100644 --- a/src/widgets/dialogs/qerrormessage.cpp +++ b/src/widgets/dialogs/qerrormessage.cpp @@ -407,8 +407,6 @@ void QErrorMessage::showMessage(const QString &message, const QString &type) void QErrorMessagePrivate::setVisible(bool visible) { Q_Q(QErrorMessage); - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden) != visible) - return; if (canBeNativeDialog()) setNativeDialogVisible(visible); diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index ad5bbf3ca6..a947ee7d93 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -848,11 +848,6 @@ void QFileDialog::setVisible(bool visible) void QFileDialogPrivate::setVisible(bool visible) { Q_Q(QFileDialog); - if (visible){ - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && !q->testAttribute(Qt::WA_WState_Hidden)) - return; - } else if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden)) - return; if (canBeNativeDialog()){ if (setNativeDialogVisible(visible)){ diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index edea842def..bb1619cb1f 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -974,8 +974,7 @@ void QFontDialog::setVisible(bool visible) void QFontDialogPrivate::setVisible(bool visible) { Q_Q(QFontDialog); - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden) != visible) - return; + if (canBeNativeDialog()) setNativeDialogVisible(visible); if (nativeDialogInUse) { diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index 2830d3f8ee..bb71a2370e 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -1660,8 +1660,6 @@ void QMessageBox::open(QObject *receiver, const char *member) void QMessageBoxPrivate::setVisible(bool visible) { Q_Q(QMessageBox); - if (q->testAttribute(Qt::WA_WState_ExplicitShowHide) && q->testAttribute(Qt::WA_WState_Hidden) != visible) - return; if (canBeNativeDialog()) setNativeDialogVisible(visible); |