obsolete code removed from QskLayoutConstraint

This commit is contained in:
Uwe Rathmann 2019-09-04 12:11:07 +02:00
parent 74c349e6c6
commit a52c8d2e7b
3 changed files with 45 additions and 93 deletions

View File

@ -443,7 +443,7 @@ void QskScrollArea::adjustItem()
moment we ignore this and start with a simplified code. moment we ignore this and start with a simplified code.
*/ */
#endif #endif
const auto newSize = QskLayoutConstraint::adjustedSize( item, rect.size() ); const auto newSize = QskLayoutConstraint::boundedSize( item, rect.size() );
item->setSize( newSize ); item->setSize( newSize );
} }

View File

@ -43,23 +43,6 @@ static inline bool qskHasHintFor( const QQuickItem* item, const char* method )
return false; return false;
} }
static inline qreal qskAdjustedValue(
QskSizePolicy::Policy policy, qreal value, qreal targetValue )
{
if ( targetValue > value )
{
if ( policy & QskSizePolicy::GrowFlag )
return targetValue;
}
else if ( targetValue < value )
{
if ( policy & QskSizePolicy::ShrinkFlag )
return targetValue;
}
return value;
}
static inline QSizeF qskExpandedSize( const QQuickItem* item, const QSizeF& constraint ) static inline QSizeF qskExpandedSize( const QQuickItem* item, const QSizeF& constraint )
{ {
using namespace QskLayoutConstraint; using namespace QskLayoutConstraint;
@ -102,7 +85,7 @@ static inline QSizeF qskEffectiveSizeHint(
if ( auto control = qskControlCast( item ) ) if ( auto control = qskControlCast( item ) )
return control->effectiveSizeHint( whichHint ); return control->effectiveSizeHint( whichHint );
QSizeF constraint( -1.0, -1.0 ); // no hint QSizeF hint( -1.0, -1.0 ); // no hint
const char* properties[] = const char* properties[] =
{ {
@ -113,38 +96,38 @@ static inline QSizeF qskEffectiveSizeHint(
const QVariant v = item->property( properties[ whichHint ] ); const QVariant v = item->property( properties[ whichHint ] );
if ( v.canConvert( QMetaType::QSizeF ) ) if ( v.canConvert( QMetaType::QSizeF ) )
constraint = v.toSizeF(); hint = v.toSizeF();
switch ( whichHint ) switch ( whichHint )
{ {
case Qt::MinimumSize: case Qt::MinimumSize:
{ {
if ( constraint.width() < 0 ) if ( hint.width() < 0 )
constraint.setWidth( 0.0 ); hint.setWidth( 0.0 );
if ( constraint.height() < 0 ) if ( hint.height() < 0 )
constraint.setHeight( 0.0 ); hint.setHeight( 0.0 );
break; break;
} }
case Qt::PreferredSize: case Qt::PreferredSize:
{ {
if ( constraint.width() < 0 ) if ( hint.width() < 0 )
constraint.setWidth( item->implicitWidth() ); hint.setWidth( item->implicitWidth() );
if ( constraint.height() < 0 ) if ( hint.height() < 0 )
constraint.setHeight( item->implicitHeight() ); hint.setHeight( item->implicitHeight() );
break; break;
} }
case Qt::MaximumSize: case Qt::MaximumSize:
{ {
if ( constraint.width() < 0 ) if ( hint.width() < 0 )
constraint.setWidth( QskLayoutConstraint::unlimited ); hint.setWidth( QskLayoutConstraint::unlimited );
if ( constraint.height() < 0 ) if ( hint.height() < 0 )
constraint.setHeight( QskLayoutConstraint::unlimited ); hint.setHeight( QskLayoutConstraint::unlimited );
break; break;
} }
@ -152,7 +135,7 @@ static inline QSizeF qskEffectiveSizeHint(
break; break;
} }
return constraint; return hint;
} }
QskLayoutConstraint::Type QskLayoutConstraint::constraintType( const QQuickItem* item ) QskLayoutConstraint::Type QskLayoutConstraint::constraintType( const QQuickItem* item )
@ -227,7 +210,7 @@ qreal QskLayoutConstraint::constrainedMetric(
{ {
#if 1 #if 1
/* /*
In case of having a corner radius of Qt::RelativeSize the margins In case of having a corner radius of Qt::RelativeSize
we might have a wrong result when using QskLayoutConstraint::unlimited. we might have a wrong result when using QskLayoutConstraint::unlimited.
No idea how to solve this in a generic way: TODO ... No idea how to solve this in a generic way: TODO ...
*/ */
@ -303,82 +286,52 @@ QskSizePolicy QskLayoutConstraint::sizePolicy( const QQuickItem* item )
QSizeF QskLayoutConstraint::boundedSize( const QQuickItem* item, const QSizeF& size ) QSizeF QskLayoutConstraint::boundedSize( const QQuickItem* item, const QSizeF& size )
{ {
const auto minSize = qskEffectiveSizeHint( item, Qt::MinimumSize ); qreal width, height;
const auto maxSize = qskEffectiveSizeHint( item, Qt::MaximumSize );
qreal width = size.width(); switch( constraintType( item ) )
qreal height = size.height(); {
case WidthForHeight:
{
const auto hintV = layoutHint( item, Qt::Vertical, -1 );
height = qBound( hintV.minimum(), size.height(), hintV.maximum() );
if ( ( minSize.width() >= 0 ) && ( minSize.width() > width ) ) const auto hintH = layoutHint( item, Qt::Horizontal, height );
width = minSize.width(); width = qBound( hintH.minimum(), size.width(), hintH.maximum() );
if ( ( minSize.height() >= 0 ) && ( minSize.height() > height ) ) break;
height = minSize.height(); }
case HeightForWidth:
{
const auto hintH = layoutHint( item, Qt::Horizontal, -1 );
width = qBound( hintH.minimum(), size.width(), hintH.maximum() );
if ( ( maxSize.width() >= 0 ) && ( maxSize.width() < width ) ) const auto hintV = layoutHint( item, Qt::Vertical, width );
width = maxSize.width(); height = qBound( hintV.minimum(), size.height(), hintV.maximum() );
if ( ( maxSize.height() >= 0 ) && ( maxSize.height() < height ) ) break;
height = maxSize.height(); }
default:
{
const auto hintH = layoutHint( item, Qt::Horizontal, -1 );
const auto hintV = layoutHint( item, Qt::Vertical, -1 );
width = qBound( hintH.minimum(), size.width(), hintH.maximum() );
height = qBound( hintV.minimum(), size.height(), hintV.maximum() );
}
}
return QSizeF( width, height ); return QSizeF( width, height );
}
QSizeF QskLayoutConstraint::adjustedSize(
const QQuickItem* item, const QSizeF& targetSize )
{
const auto policy = sizePolicy( item );
const auto boundedSize = QskLayoutConstraint::boundedSize( item, targetSize );
const auto preferredSize = qskEffectiveSizeHint( item, Qt::PreferredSize );
qreal w;
qreal h;
if ( policy.horizontalPolicy() == QskSizePolicy::Constrained )
{
h = qskAdjustedValue( policy.verticalPolicy(),
preferredSize.height(), boundedSize.height() );
w = widthForHeight( item, h );
if ( w < boundedSize.height() )
w = boundedSize.height();
}
else if ( policy.verticalPolicy() == QskSizePolicy::Constrained )
{
w = qskAdjustedValue( policy.horizontalPolicy(),
preferredSize.width(), boundedSize.width() );
h = heightForWidth( item, w );
if ( h < boundedSize.height() )
h = boundedSize.height();
}
else
{
w = qskAdjustedValue( policy.horizontalPolicy(),
preferredSize.width(), boundedSize.width() );
h = qskAdjustedValue( policy.verticalPolicy(),
preferredSize.height(), boundedSize.height() );
}
return QSizeF( w, h );
} }
qreal QskLayoutConstraint::sizeHint( const QQuickItem* item, qreal QskLayoutConstraint::sizeHint( const QQuickItem* item,
Qt::SizeHint whichHint, Qt::Orientation orientation, qreal constraint ) Qt::SizeHint whichHint, Qt::Orientation orientation, qreal constraint )
{ {
if ( orientation == Qt::Horizontal ) if ( orientation == Qt::Horizontal )
{
return sizeHint( item, whichHint, QSizeF( -1.0, constraint ) ).width(); return sizeHint( item, whichHint, QSizeF( -1.0, constraint ) ).width();
}
else else
{
return sizeHint( item, whichHint, QSizeF( constraint, -1.0 ) ).height(); return sizeHint( item, whichHint, QSizeF( constraint, -1.0 ) ).height();
} }
}
QSizeF QskLayoutConstraint::sizeHint( const QQuickItem* item, QSizeF QskLayoutConstraint::sizeHint( const QQuickItem* item,
Qt::SizeHint whichHint, const QSizeF& constraint ) Qt::SizeHint whichHint, const QSizeF& constraint )

View File

@ -47,7 +47,6 @@ namespace QskLayoutConstraint
QSK_EXPORT QskSizePolicy sizePolicy( const QQuickItem* ); QSK_EXPORT QskSizePolicy sizePolicy( const QQuickItem* );
QSK_EXPORT QSizeF boundedSize( const QQuickItem*, const QSizeF& ); QSK_EXPORT QSizeF boundedSize( const QQuickItem*, const QSizeF& );
QSK_EXPORT QSizeF adjustedSize( const QQuickItem*, const QSizeF& );
QSK_EXPORT QSizeF sizeHint( const QQuickItem*, QSK_EXPORT QSizeF sizeHint( const QQuickItem*,
Qt::SizeHint, const QSizeF& constraint = QSizeF() ); Qt::SizeHint, const QSizeF& constraint = QSizeF() );