Add QWidgetPrivate::isExplicitlyHidden() helper function

To aid readability.

Task-number: QTBUG-121398
Change-Id: I3cb231584c2b7aee72e9f01c669fed1e01fbe475
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 4634fbf34e1674846e1666bcdb3055f82e3096b0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Tor Arne Vestbø 2024-01-17 19:18:08 +01:00 committed by Qt Cherry-pick Bot
parent 03bf71b7ff
commit f57539d4f5
7 changed files with 19 additions and 10 deletions

View File

@ -772,7 +772,7 @@ void QLayoutPrivate::reparentChildWidgets(QWidget *mw)
w->metaObject()->className(), qUtf16Printable(w->objectName()));
}
#endif
bool needShow = mwVisible && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide));
bool needShow = mwVisible && !QWidgetPrivate::get(w)->isExplicitlyHidden();
if (pw != mw)
w->setParent(mw);
if (needShow)
@ -858,7 +858,7 @@ void QLayout::addChildWidget(QWidget *w)
#endif
pw = nullptr;
}
bool needShow = mw && mw->isVisible() && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide));
bool needShow = mw && mw->isVisible() && !QWidgetPrivate::get(w)->isExplicitlyHidden();
if (!pw && mw)
w->setParent(mw);
w->setAttribute(Qt::WA_LaidOut);

View File

@ -8439,10 +8439,16 @@ void QWidget::setHidden(bool hidden)
setVisible(!hidden);
}
bool QWidgetPrivate::isExplicitlyHidden() const
{
Q_Q(const QWidget);
return q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide);
}
void QWidgetPrivate::_q_showIfNotHidden()
{
Q_Q(QWidget);
if ( !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide)) )
if (!isExplicitlyHidden())
q->setVisible(true);
}
@ -10903,7 +10909,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
targetScreen = q->parentWidget()->window()->screen();
}
bool explicitlyHidden = q->testAttribute(Qt::WA_WState_Hidden) && q->testAttribute(Qt::WA_WState_ExplicitShowHide);
bool explicitlyHidden = isExplicitlyHidden();
// Reparenting toplevel to child
if (wasCreated && !(f & Qt::Window) && (oldFlags & Qt::Window) && !q->testAttribute(Qt::WA_NativeWindow)) {

View File

@ -379,6 +379,7 @@ public:
void show_sys();
void hide_sys();
void hide_helper();
bool isExplicitlyHidden() const;
void _q_showIfNotHidden();
void setVisible(bool);

View File

@ -5,6 +5,8 @@
#include "qwidget.h"
#include "qdebug.h"
#include <QtWidgets/private/qwidget_p.h>
#include "qwidgetaction_p.h"
QT_BEGIN_NAMESPACE
@ -108,7 +110,7 @@ void QWidgetAction::setDefaultWidget(QWidget *widget)
if (!widget)
return;
setVisible(!(widget->isHidden() && widget->testAttribute(Qt::WA_WState_ExplicitShowHide)));
setVisible(!QWidgetPrivate::get(widget)->isExplicitlyHidden());
d->defaultWidget->hide();
d->defaultWidget->setParent(nullptr);
d->defaultWidgetInUse = false;

View File

@ -75,7 +75,7 @@ public:
void _q_showIfNotHidden()
{
Q_Q(QSizeGrip);
bool showSizeGrip = !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide));
bool showSizeGrip = !isExplicitlyHidden();
updateTopLevelWidget();
if (tlw && showSizeGrip) {
Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
@ -451,7 +451,7 @@ void QSizeGrip::setVisible(bool visible)
bool QSizeGrip::eventFilter(QObject *o, QEvent *e)
{
Q_D(QSizeGrip);
if ((isHidden() && testAttribute(Qt::WA_WState_ExplicitShowHide))
if (d->isExplicitlyHidden()
|| e->type() != QEvent::WindowStateChange
|| o != d->tlw) {
return QWidget::eventFilter(o, e);

View File

@ -709,7 +709,7 @@ void QSplitterPrivate::setSizes_helper(const QList<int> &sizes, bool clampNegati
bool QSplitterPrivate::shouldShowWidget(const QWidget *w) const
{
Q_Q(const QSplitter);
return q->isVisible() && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide));
return q->isVisible() && !QWidgetPrivate::get(w)->isExplicitlyHidden();
}
void QSplitterPrivate::setGeo(QSplitterLayoutStruct *sls, int p, int s, bool allowCollapse)

View File

@ -271,7 +271,7 @@ int QStatusBar::insertWidget(int index, QWidget *widget, int stretch)
widget->hide();
reformat();
if (!widget->isHidden() || !widget->testAttribute(Qt::WA_WState_ExplicitShowHide))
if (!QWidgetPrivate::get(widget)->isExplicitlyHidden())
widget->show();
return index;
@ -332,7 +332,7 @@ int QStatusBar::insertPermanentWidget(int index, QWidget *widget, int stretch)
d->items.insert(index, item);
reformat();
if (!widget->isHidden() || !widget->testAttribute(Qt::WA_WState_ExplicitShowHide))
if (!QWidgetPrivate::get(widget)->isExplicitlyHidden())
widget->show();
return index;