QskLayoutConstraint::itemRect -> QskLayoutConstraint::boundedRect
This commit is contained in:
parent
a52c8d2e7b
commit
f4ce23a422
|
@ -43,42 +43,6 @@ static inline bool qskHasHintFor( const QQuickItem* item, const char* method )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QSizeF qskExpandedSize( const QQuickItem* item, const QSizeF& constraint )
|
|
||||||
{
|
|
||||||
using namespace QskLayoutConstraint;
|
|
||||||
|
|
||||||
const auto policy = sizePolicy( item );
|
|
||||||
|
|
||||||
QSizeF size = constraint;
|
|
||||||
|
|
||||||
const bool vGrow = ( policy.policy( Qt::Vertical ) & QskSizePolicy::GrowFlag );
|
|
||||||
const bool hGrow = ( policy.policy( Qt::Horizontal ) & QskSizePolicy::GrowFlag );
|
|
||||||
|
|
||||||
if ( !vGrow || !hGrow )
|
|
||||||
{
|
|
||||||
const auto hint = sizeHint( item, Qt::PreferredSize, constraint );
|
|
||||||
|
|
||||||
if ( !vGrow )
|
|
||||||
size.setHeight( hint.height() );
|
|
||||||
|
|
||||||
if ( !hGrow )
|
|
||||||
size.setWidth( hint.width() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !size.isValid() )
|
|
||||||
{
|
|
||||||
const auto hint = sizeHint( item, Qt::MaximumSize, size );
|
|
||||||
|
|
||||||
if ( size.width() == -1 )
|
|
||||||
size.setWidth( hint.width() );
|
|
||||||
|
|
||||||
if ( size.height() == -1 )
|
|
||||||
size.setHeight( hint.height() );
|
|
||||||
}
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline QSizeF qskEffectiveSizeHint(
|
static inline QSizeF qskEffectiveSizeHint(
|
||||||
const QQuickItem* item, Qt::SizeHint whichHint )
|
const QQuickItem* item, Qt::SizeHint whichHint )
|
||||||
{
|
{
|
||||||
|
@ -403,32 +367,13 @@ QSizeF QskLayoutConstraint::sizeHint( const QQuickItem* item,
|
||||||
return hint;
|
return hint;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF QskLayoutConstraint::itemRect( const QQuickItem* item,
|
QRectF QskLayoutConstraint::boundedRect( const QQuickItem* item,
|
||||||
const QRectF& rect, Qt::Alignment alignment )
|
const QRectF& rect, Qt::Alignment alignment )
|
||||||
{
|
{
|
||||||
QSizeF size = qskExpandedSize( item, QSizeF( -1, -1 ) );
|
auto size = boundedSize( item, rect.size() );
|
||||||
|
#if 0
|
||||||
switch( constraintType( item ) )
|
size = size.boundedTo( rect.size() ); // ignoring minimumSize
|
||||||
{
|
#endif
|
||||||
case HeightForWidth:
|
|
||||||
{
|
|
||||||
if ( size.width() > rect.width() )
|
|
||||||
size = qskExpandedSize( item, QSizeF( rect.width(), -1 ) );
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case WidthForHeight:
|
|
||||||
{
|
|
||||||
if ( size.height() > rect.height() )
|
|
||||||
size = qskExpandedSize( item, QSizeF( -1, rect.height() ) );
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
size = size.boundedTo( rect.size() );
|
|
||||||
|
|
||||||
return qskAlignedRectF( rect, size.width(), size.height(), alignment );
|
return qskAlignedRectF( rect, size.width(), size.height(), alignment );
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,10 @@ namespace QskLayoutConstraint
|
||||||
|
|
||||||
QSK_EXPORT QskSizePolicy sizePolicy( const QQuickItem* );
|
QSK_EXPORT QskSizePolicy sizePolicy( const QQuickItem* );
|
||||||
|
|
||||||
|
// size/rect bounded by the layout hints
|
||||||
QSK_EXPORT QSizeF boundedSize( const QQuickItem*, const QSizeF& );
|
QSK_EXPORT QSizeF boundedSize( const QQuickItem*, const QSizeF& );
|
||||||
|
QSK_EXPORT QRectF boundedRect(
|
||||||
|
const QQuickItem*, const QRectF&, Qt::Alignment );
|
||||||
|
|
||||||
QSK_EXPORT QSizeF sizeHint( const QQuickItem*,
|
QSK_EXPORT QSizeF sizeHint( const QQuickItem*,
|
||||||
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
Qt::SizeHint, const QSizeF& constraint = QSizeF() );
|
||||||
|
@ -54,9 +57,6 @@ namespace QskLayoutConstraint
|
||||||
QSK_EXPORT qreal sizeHint(
|
QSK_EXPORT qreal sizeHint(
|
||||||
const QQuickItem*, Qt::SizeHint, Qt::Orientation, qreal constraint );
|
const QQuickItem*, Qt::SizeHint, Qt::Orientation, qreal constraint );
|
||||||
|
|
||||||
QSK_EXPORT QRectF itemRect(
|
|
||||||
const QQuickItem*, const QRectF&, Qt::Alignment );
|
|
||||||
|
|
||||||
QSK_EXPORT QskLayoutHint layoutHint(
|
QSK_EXPORT QskLayoutHint layoutHint(
|
||||||
const QQuickItem*, Qt::Orientation, qreal constraint );
|
const QQuickItem*, Qt::Orientation, qreal constraint );
|
||||||
|
|
||||||
|
|
|
@ -263,7 +263,7 @@ void QskLayoutEngine2D::layoutItem( QQuickItem* item,
|
||||||
alignment = m_data->effectiveAlignment( alignment );
|
alignment = m_data->effectiveAlignment( alignment );
|
||||||
|
|
||||||
QRectF rect = layoutData->geometryAt( grid );
|
QRectF rect = layoutData->geometryAt( grid );
|
||||||
rect = QskLayoutConstraint::itemRect(item, rect, alignment );
|
rect = QskLayoutConstraint::boundedRect(item, rect, alignment );
|
||||||
|
|
||||||
if ( layoutData->direction == Qt::RightToLeft )
|
if ( layoutData->direction == Qt::RightToLeft )
|
||||||
{
|
{
|
||||||
|
|
|
@ -400,7 +400,7 @@ QRectF QskStackBox::geometryForItemAt( int index ) const
|
||||||
const auto& info = m_data->itemInfos[ index ];
|
const auto& info = m_data->itemInfos[ index ];
|
||||||
|
|
||||||
const auto align = info.alignment ? info.alignment : m_data->defaultAlignment;
|
const auto align = info.alignment ? info.alignment : m_data->defaultAlignment;
|
||||||
return QskLayoutConstraint::itemRect( info.item, r, align );
|
return QskLayoutConstraint::boundedRect( info.item, r, align );
|
||||||
}
|
}
|
||||||
|
|
||||||
return QRectF( r.x(), r.y(), 0.0, 0.0 );
|
return QRectF( r.x(), r.y(), 0.0, 0.0 );
|
||||||
|
|
Loading…
Reference in New Issue