From 668e1819570d5f741659f21cb4044f365fbfb58b Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Fri, 20 Aug 2010 02:21:34 +0000 Subject: [PATCH] Move constraint solving to the rest of the constraint stuff. Only adjust windows if specifications are feasible. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38285 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/decorators/SATDecorator/SATGroup.cpp | 10 +--------- src/add-ons/decorators/SATDecorator/SATGroup.h | 2 +- src/add-ons/decorators/SATDecorator/SATWindow.cpp | 12 ++++++++++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.cpp b/src/add-ons/decorators/SATDecorator/SATGroup.cpp index 9ed460d982..edb726426a 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.cpp +++ b/src/add-ons/decorators/SATDecorator/SATGroup.cpp @@ -713,16 +713,8 @@ SATGroup::FindVerticalTab(float position) void -SATGroup::SolveSATAndAdjustWindows(SATWindow* triggerWindow) +SATGroup::AdjustWindows(SATWindow* triggerWindow) { - // solve Stack & Tile specification - ResultType result; - for (int32 tries = 0; tries < 15; tries++) { - result = fLinearSpec.Solve(); - if (result == OPTIMAL || result == INFEASIBLE) - break; - } - // set window locations and sizes for (int i = 0; i < fSATWindowList.CountItems(); i++) { SATWindow* windowSAT = fSATWindowList.ItemAt(i); diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.h b/src/add-ons/decorators/SATDecorator/SATGroup.h index 0e339e9efd..da0b48df76 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.h +++ b/src/add-ons/decorators/SATDecorator/SATGroup.h @@ -198,7 +198,7 @@ public: LinearSpec* GetLinearSpec() { return &fLinearSpec; } - void SolveSATAndAdjustWindows(SATWindow* triggerWindow); + void AdjustWindows(SATWindow* triggerWindow); /*! Create a new WindowArea from the crossing and add the window. */ bool AddWindow(SATWindow* window, Tab* left, Tab* top, diff --git a/src/add-ons/decorators/SATDecorator/SATWindow.cpp b/src/add-ons/decorators/SATDecorator/SATWindow.cpp index bc7e471f8e..4f463c729d 100644 --- a/src/add-ons/decorators/SATDecorator/SATWindow.cpp +++ b/src/add-ons/decorators/SATDecorator/SATWindow.cpp @@ -405,7 +405,6 @@ GroupCookie::DoGroupLayout(SATWindow* triggerWindow) leftConstraint->SetRightSide(frame.left); topConstraint->SetRightSide(frame.top); - widthConstraint->SetPenaltyNeg(110); widthConstraint->SetPenaltyPos(110); heightConstraint->SetPenaltyNeg(110); @@ -417,7 +416,16 @@ GroupCookie::DoGroupLayout(SATWindow* triggerWindow) topConstraint->SetPenaltyPos(100); // After we set the new parameter solve and apply the new layout. - fSATGroup->SolveSATAndAdjustWindows(triggerWindow); + ResultType result; + for (int32 tries = 0; tries < 15; tries++) { + result = fSATGroup->GetLinearSpec()->Solve(); + if (result == INFEASIBLE) + break; + if (result == OPTIMAL) { + fSATGroup->AdjustWindows(triggerWindow); + break; + } + } // set penalties back to normal widthConstraint->SetPenaltyNeg(10);