From 82a0965357f6e9d59ddd9f3d4b01af9590df404c Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Mon, 23 Jan 2012 13:19:13 +1300 Subject: [PATCH] Improve efficiency when validating an ALM layout. --- src/libs/alm/ALMLayout.cpp | 6 ------ src/libs/alm/SharedSolver.cpp | 10 ++++++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libs/alm/ALMLayout.cpp b/src/libs/alm/ALMLayout.cpp index eb8988b9eb..ebb475bf8e 100644 --- a/src/libs/alm/ALMLayout.cpp +++ b/src/libs/alm/ALMLayout.cpp @@ -1016,12 +1016,6 @@ BALMLayout::UpdateConstraints(BLayoutContext* context) for (int i = 0; i < CountItems(); i++) AreaFor(ItemAt(i))->InvalidateSizeConstraints(); fRowColumnManager->UpdateConstraints(); - - if (context) { - BSize size(LayoutArea().Size()); - Right()->SetRange(size.width, size.width); - Bottom()->SetRange(size.height, size.height); - } } diff --git a/src/libs/alm/SharedSolver.cpp b/src/libs/alm/SharedSolver.cpp index 62caa9390d..7b70adcb26 100644 --- a/src/libs/alm/SharedSolver.cpp +++ b/src/libs/alm/SharedSolver.cpp @@ -194,11 +194,17 @@ SharedSolver::ValidateLayout(BLayoutContext* context) if (fLayoutValid && fLayoutContext == context) return; - fConstraintsValid = false; _SetContext(context); _ValidateConstraints(); - fLayoutResult = fLinearSpec.Solve(); + for (int32 i = fLayouts.CountItems() - 1; i >= 0; i--) { + BALMLayout* layout = fLayouts.ItemAt(i); + BSize size(layout->LayoutArea().Size()); + layout->Right()->SetRange(size.width, size.width); + layout->Bottom()->SetRange(size.height, size.height); + } + + fLayoutResult = fLinearSpec.Solve(); fLayoutValid = true; }