diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2024-01-17 19:18:08 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2024-01-31 15:19:49 +0100 |
commit | 4634fbf34e1674846e1666bcdb3055f82e3096b0 (patch) | |
tree | c25474cdd61f7f6dffac4e56fd3bf82b95df279d | |
parent | 6efc95b699a0b9066c34611f6441a13eabec1b84 (diff) |
Add QWidgetPrivate::isExplicitlyHidden() helper function
To aid readability.
Task-number: QTBUG-121398
Pick-to: 6.7
Change-Id: I3cb231584c2b7aee72e9f01c669fed1e01fbe475
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
-rw-r--r-- | src/widgets/kernel/qlayout.cpp | 4 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 10 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget_p.h | 1 | ||||
-rw-r--r-- | src/widgets/kernel/qwidgetaction.cpp | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qsizegrip.cpp | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qsplitter.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qstatusbar.cpp | 4 |
7 files changed, 19 insertions, 10 deletions
diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index 76411adaf0..0251ecd7fd 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -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); diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 162268fad3..e5e0ef478d 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -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)) { diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 926ec37b2d..942d284078 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -379,6 +379,7 @@ public: void show_sys(); void hide_sys(); void hide_helper(); + bool isExplicitlyHidden() const; void _q_showIfNotHidden(); void setVisible(bool); diff --git a/src/widgets/kernel/qwidgetaction.cpp b/src/widgets/kernel/qwidgetaction.cpp index e2845548df..13f386d3ec 100644 --- a/src/widgets/kernel/qwidgetaction.cpp +++ b/src/widgets/kernel/qwidgetaction.cpp @@ -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; diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp index 8d23784f39..2500983450 100644 --- a/src/widgets/widgets/qsizegrip.cpp +++ b/src/widgets/widgets/qsizegrip.cpp @@ -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); diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index 84c3799494..d0519a56a2 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -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) diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp index 871eace58f..e398f52ac4 100644 --- a/src/widgets/widgets/qstatusbar.cpp +++ b/src/widgets/widgets/qstatusbar.cpp @@ -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; |