hiding isTransparentForPositioner
This commit is contained in:
parent
c17e3defd3
commit
741af6a8a6
@ -804,7 +804,7 @@ void QskControl::itemChange( QQuickItem::ItemChange change,
|
|||||||
}
|
}
|
||||||
case QQuickItem::ItemChildAddedChange:
|
case QQuickItem::ItemChildAddedChange:
|
||||||
{
|
{
|
||||||
if ( autoLayoutChildren() && !qskIsTransparentForPositioner( value.item ) )
|
if ( autoLayoutChildren() && qskIsAdjustableByLayout( value.item ) )
|
||||||
polish();
|
polish();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -844,13 +844,7 @@ void QskControl::updateItemPolish()
|
|||||||
const auto children = childItems();
|
const auto children = childItems();
|
||||||
for ( auto child : children )
|
for ( auto child : children )
|
||||||
{
|
{
|
||||||
/*
|
if ( qskIsAdjustableByLayout( child ) )
|
||||||
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 ) )
|
|
||||||
{
|
{
|
||||||
const auto r = qskConstrainedItemRect( child, rect );
|
const auto r = qskConstrainedItemRect( child, rect );
|
||||||
qskSetItemGeometry( child, r );
|
qskSetItemGeometry( child, r );
|
||||||
|
@ -133,14 +133,27 @@ bool qskIsTransparentForPositioner( const QQuickItem* item )
|
|||||||
|
|
||||||
bool qskIsVisibleToLayout( 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 );
|
if ( auto control = qskControlCast( item ) )
|
||||||
return !d->isTransparentForPositioner()
|
adjustable = control->testLayoutHint( QskControl::LayoutWhenHidden );
|
||||||
&& ( d->explicitVisible || qskRetainSizeWhenHidden( item ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return adjustable;
|
||||||
}
|
}
|
||||||
|
|
||||||
QskSizePolicy qskSizePolicy( const QQuickItem* item )
|
QskSizePolicy qskSizePolicy( const QQuickItem* item )
|
||||||
|
@ -32,7 +32,9 @@ QSK_EXPORT bool qskIsPolishScheduled( const QQuickItem* );
|
|||||||
|
|
||||||
QSK_EXPORT void qskSetTransparentForPositioner( QQuickItem*, bool );
|
QSK_EXPORT void qskSetTransparentForPositioner( QQuickItem*, bool );
|
||||||
QSK_EXPORT bool qskIsTransparentForPositioner( const QQuickItem* );
|
QSK_EXPORT bool qskIsTransparentForPositioner( const QQuickItem* );
|
||||||
|
|
||||||
QSK_EXPORT bool qskIsVisibleToLayout( const QQuickItem* );
|
QSK_EXPORT bool qskIsVisibleToLayout( const QQuickItem* );
|
||||||
|
QSK_EXPORT bool qskIsAdjustableByLayout( const QQuickItem* );
|
||||||
|
|
||||||
QSK_EXPORT QSizeF qskEffectiveSizeHint( const QQuickItem*,
|
QSK_EXPORT QSizeF qskEffectiveSizeHint( const QQuickItem*,
|
||||||
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
||||||
|
@ -248,7 +248,7 @@ void QskSubWindow::itemChange( QQuickItem::ItemChange change,
|
|||||||
case QQuickItem::ItemChildAddedChange:
|
case QQuickItem::ItemChildAddedChange:
|
||||||
case QQuickItem::ItemChildRemovedChange:
|
case QQuickItem::ItemChildRemovedChange:
|
||||||
{
|
{
|
||||||
if ( !qskIsTransparentForPositioner( value.item ) )
|
if ( qskIsVisibleToLayout( value.item ) )
|
||||||
{
|
{
|
||||||
resetImplicitSize();
|
resetImplicitSize();
|
||||||
polish();
|
polish();
|
||||||
|
@ -489,7 +489,7 @@ QSize QskWindow::sizeConstraint() const
|
|||||||
const auto children = contentItem()->childItems();
|
const auto children = contentItem()->childItems();
|
||||||
for ( auto child : children )
|
for ( auto child : children )
|
||||||
{
|
{
|
||||||
if ( !qskIsTransparentForPositioner( child ) )
|
if ( qskIsVisibleToLayout( child ) )
|
||||||
{
|
{
|
||||||
const auto size = qskSizeConstraint( child, Qt::PreferredSize );
|
const auto size = qskSizeConstraint( child, Qt::PreferredSize );
|
||||||
|
|
||||||
@ -527,7 +527,7 @@ void QskWindow::layoutItems()
|
|||||||
const auto children = contentItem()->childItems();
|
const auto children = contentItem()->childItems();
|
||||||
for ( auto child : children )
|
for ( auto child : children )
|
||||||
{
|
{
|
||||||
if ( !qskIsTransparentForPositioner( child ) )
|
if ( qskIsAdjustableByLayout( child ) )
|
||||||
{
|
{
|
||||||
const auto r = qskConstrainedItemRect( child, rect );
|
const auto r = qskConstrainedItemRect( child, rect );
|
||||||
qskSetItemGeometry( child, r );
|
qskSetItemGeometry( child, r );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user