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

View File

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

View File

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

View File

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

View File

@ -75,7 +75,7 @@ public:
void _q_showIfNotHidden() void _q_showIfNotHidden()
{ {
Q_Q(QSizeGrip); Q_Q(QSizeGrip);
bool showSizeGrip = !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide)); bool showSizeGrip = !isExplicitlyHidden();
updateTopLevelWidget(); updateTopLevelWidget();
if (tlw && showSizeGrip) { if (tlw && showSizeGrip) {
Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen; Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
@ -451,7 +451,7 @@ void QSizeGrip::setVisible(bool visible)
bool QSizeGrip::eventFilter(QObject *o, QEvent *e) bool QSizeGrip::eventFilter(QObject *o, QEvent *e)
{ {
Q_D(QSizeGrip); Q_D(QSizeGrip);
if ((isHidden() && testAttribute(Qt::WA_WState_ExplicitShowHide)) if (d->isExplicitlyHidden()
|| e->type() != QEvent::WindowStateChange || e->type() != QEvent::WindowStateChange
|| o != d->tlw) { || o != d->tlw) {
return QWidget::eventFilter(o, e); 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 bool QSplitterPrivate::shouldShowWidget(const QWidget *w) const
{ {
Q_Q(const QSplitter); 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) 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(); widget->hide();
reformat(); reformat();
if (!widget->isHidden() || !widget->testAttribute(Qt::WA_WState_ExplicitShowHide)) if (!QWidgetPrivate::get(widget)->isExplicitlyHidden())
widget->show(); widget->show();
return index; return index;
@ -332,7 +332,7 @@ int QStatusBar::insertPermanentWidget(int index, QWidget *widget, int stretch)
d->items.insert(index, item); d->items.insert(index, item);
reformat(); reformat();
if (!widget->isHidden() || !widget->testAttribute(Qt::WA_WState_ExplicitShowHide)) if (!QWidgetPrivate::get(widget)->isExplicitlyHidden())
widget->show(); widget->show();
return index; return index;