avoid useless constraints

This commit is contained in:
Uwe Rathmann 2020-04-18 11:50:44 +02:00
parent 73572dd06e
commit 09117c4f6d
2 changed files with 10 additions and 9 deletions

View File

@ -229,8 +229,8 @@ void AnchorBox::updateHints()
Solver solver;
setupAnchorConstraints( solver );
setupSizeConstraints( solver );
setupAnchorConstraints( false, solver );
setupSizeConstraints( true, solver );
{
solver.updateVariables();
@ -305,8 +305,8 @@ void AnchorBox::updateVariables( qreal width, qreal height )
if ( !solver.hasConstraints() )
{
setupAnchorConstraints( solver );
setupSizeConstraints( solver );
setupAnchorConstraints( true, solver );
setupSizeConstraints( true, solver );
const double strength = 0.9 * Strength::required;
@ -320,7 +320,7 @@ void AnchorBox::updateVariables( qreal width, qreal height )
solver.updateVariables();
}
void AnchorBox::setupAnchorConstraints( Solver& solver )
void AnchorBox::setupAnchorConstraints( bool layoutChildren, Solver& solver )
{
auto& geometries = m_data->geometries;
@ -367,7 +367,7 @@ void AnchorBox::setupAnchorConstraints( Solver& solver )
solver.addConstraint( expr1 == expr2 );
#if 1
if ( anchor.item2 != this )
if ( layoutChildren && anchor.item2 != this )
{
const auto o = qskOrientation( anchor.edge1 );
@ -386,7 +386,7 @@ void AnchorBox::setupAnchorConstraints( Solver& solver )
}
}
void AnchorBox::setupSizeConstraints( Solver& solver )
void AnchorBox::setupSizeConstraints( bool layoutChildren, Solver& solver )
{
auto& geometries = m_data->geometries;
@ -409,6 +409,7 @@ void AnchorBox::setupSizeConstraints( Solver& solver )
solver.addConstraint( r.height() >= minSize.height() );
}
if ( layoutChildren )
{
// preferred size
const auto prefSize = qskSizeConstraint( item, Qt::PreferredSize );

View File

@ -40,8 +40,8 @@ class AnchorBox : public QskControl
private:
void updateHints();
void updateVariables( qreal width, qreal height );
void setupAnchorConstraints( Solver& );
void setupSizeConstraints( Solver& );
void setupAnchorConstraints( bool layoutChildren, Solver& );
void setupSizeConstraints( bool layoutChildren, Solver& );
class PrivateData;
std::unique_ptr< PrivateData > m_data;