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

View File

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