summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-10-20 18:33:05 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2023-10-23 19:42:46 +0200
commit92194ac571cb70c796101d1daa2e4bed214a439b (patch)
tree560f633114665216cdc52c5bd973b5de48274047 /src/widgets/dialogs
parentc0f13eeb99e58c71c685d4c2d2932f300d69fb26 (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.cpp5
-rw-r--r--src/widgets/dialogs/qdialog.cpp9
-rw-r--r--src/widgets/dialogs/qerrormessage.cpp2
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp5
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp3
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp2
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);