hiding isTransparentForPositioner
This commit is contained in:
parent
c17e3defd3
commit
741af6a8a6
@ -804,7 +804,7 @@ void QskControl::itemChange( QQuickItem::ItemChange change,
|
||||
}
|
||||
case QQuickItem::ItemChildAddedChange:
|
||||
{
|
||||
if ( autoLayoutChildren() && !qskIsTransparentForPositioner( value.item ) )
|
||||
if ( autoLayoutChildren() && qskIsAdjustableByLayout( value.item ) )
|
||||
polish();
|
||||
|
||||
break;
|
||||
@ -844,13 +844,7 @@ void QskControl::updateItemPolish()
|
||||
const auto children = childItems();
|
||||
for ( auto child : children )
|
||||
{
|
||||
/*
|
||||
We don't want to resize invisible children, but then
|
||||
we would need to set up connections to know when a child
|
||||
becomes visible. So we don't use qskIsVisibleToLayout here.
|
||||
And what about using QskControl::LayoutOutWhenHidden ?
|
||||
*/
|
||||
if ( !qskIsTransparentForPositioner( child ) )
|
||||
if ( qskIsAdjustableByLayout( child ) )
|
||||
{
|
||||
const auto r = qskConstrainedItemRect( child, rect );
|
||||
qskSetItemGeometry( child, r );
|
||||
|
@ -133,14 +133,27 @@ bool qskIsTransparentForPositioner( const QQuickItem* item )
|
||||
|
||||
bool qskIsVisibleToLayout( const QQuickItem* item )
|
||||
{
|
||||
if ( item )
|
||||
if ( item == nullptr )
|
||||
return false;
|
||||
|
||||
const auto d = QQuickItemPrivate::get( item );
|
||||
return !d->isTransparentForPositioner()
|
||||
&& ( d->explicitVisible || qskRetainSizeWhenHidden( item ) );
|
||||
}
|
||||
|
||||
bool qskIsAdjustableByLayout( const QQuickItem* item )
|
||||
{
|
||||
if ( qskIsTransparentForPositioner( item ) )
|
||||
return false;
|
||||
|
||||
bool adjustable = qskIsVisibleToParent( item );
|
||||
if ( !adjustable )
|
||||
{
|
||||
const auto d = QQuickItemPrivate::get( item );
|
||||
return !d->isTransparentForPositioner()
|
||||
&& ( d->explicitVisible || qskRetainSizeWhenHidden( item ) );
|
||||
if ( auto control = qskControlCast( item ) )
|
||||
adjustable = control->testLayoutHint( QskControl::LayoutWhenHidden );
|
||||
}
|
||||
|
||||
return false;
|
||||
return adjustable;
|
||||
}
|
||||
|
||||
QskSizePolicy qskSizePolicy( const QQuickItem* item )
|
||||
|
@ -32,7 +32,9 @@ QSK_EXPORT bool qskIsPolishScheduled( const QQuickItem* );
|
||||
|
||||
QSK_EXPORT void qskSetTransparentForPositioner( QQuickItem*, bool );
|
||||
QSK_EXPORT bool qskIsTransparentForPositioner( const QQuickItem* );
|
||||
|
||||
QSK_EXPORT bool qskIsVisibleToLayout( const QQuickItem* );
|
||||
QSK_EXPORT bool qskIsAdjustableByLayout( const QQuickItem* );
|
||||
|
||||
QSK_EXPORT QSizeF qskEffectiveSizeHint( const QQuickItem*,
|
||||
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
||||
|
@ -248,7 +248,7 @@ void QskSubWindow::itemChange( QQuickItem::ItemChange change,
|
||||
case QQuickItem::ItemChildAddedChange:
|
||||
case QQuickItem::ItemChildRemovedChange:
|
||||
{
|
||||
if ( !qskIsTransparentForPositioner( value.item ) )
|
||||
if ( qskIsVisibleToLayout( value.item ) )
|
||||
{
|
||||
resetImplicitSize();
|
||||
polish();
|
||||
|
@ -489,7 +489,7 @@ QSize QskWindow::sizeConstraint() const
|
||||
const auto children = contentItem()->childItems();
|
||||
for ( auto child : children )
|
||||
{
|
||||
if ( !qskIsTransparentForPositioner( child ) )
|
||||
if ( qskIsVisibleToLayout( child ) )
|
||||
{
|
||||
const auto size = qskSizeConstraint( child, Qt::PreferredSize );
|
||||
|
||||
@ -527,7 +527,7 @@ void QskWindow::layoutItems()
|
||||
const auto children = contentItem()->childItems();
|
||||
for ( auto child : children )
|
||||
{
|
||||
if ( !qskIsTransparentForPositioner( child ) )
|
||||
if ( qskIsAdjustableByLayout( child ) )
|
||||
{
|
||||
const auto r = qskConstrainedItemRect( child, rect );
|
||||
qskSetItemGeometry( child, r );
|
||||
|
Loading…
x
Reference in New Issue
Block a user