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>
This commit is contained in:
parent
c0f13eeb99
commit
92194ac571
@ -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();
|
||||
|
@ -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()) {
|
||||
|
@ -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);
|
||||
|
@ -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)){
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user