From 13a19d84df62364c12f00d925b15f5ba9dd065ac Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Mon, 14 Feb 2011 21:45:44 +0000 Subject: [PATCH] Fix #7181. The active set solver can only handle positive values and the offset was not added everywhere. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40497 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/decorators/SATDecorator/SATGroup.cpp | 4 ++-- src/add-ons/decorators/SATDecorator/SATGroup.h | 4 ++++ src/add-ons/decorators/SATDecorator/SATWindow.cpp | 12 +++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.cpp b/src/add-ons/decorators/SATDecorator/SATGroup.cpp index 3befb3ec4a..bce57bd263 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.cpp +++ b/src/add-ons/decorators/SATDecorator/SATGroup.cpp @@ -467,14 +467,14 @@ Tab::~Tab() float Tab::Position() const { - return (float)fVariable->Value(); + return (float)fVariable->Value() - kMakePositiveOffset; } void Tab::SetPosition(float position) { - fVariable->SetValue(position); + fVariable->SetValue(position + kMakePositiveOffset); } diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.h b/src/add-ons/decorators/SATDecorator/SATGroup.h index 1ebd394a53..ed000c2b88 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.h +++ b/src/add-ons/decorators/SATDecorator/SATGroup.h @@ -86,6 +86,10 @@ class SATGroup; typedef BObjectList CrossingList; +// make all coordinates positive needed for the solver +const float kMakePositiveOffset = 5000; + + class Tab : public BReferenceable { public: enum orientation_t diff --git a/src/add-ons/decorators/SATDecorator/SATWindow.cpp b/src/add-ons/decorators/SATDecorator/SATWindow.cpp index 4a14fe651c..493fae3164 100644 --- a/src/add-ons/decorators/SATDecorator/SATWindow.cpp +++ b/src/add-ons/decorators/SATDecorator/SATWindow.cpp @@ -57,9 +57,6 @@ GroupCookie::~GroupCookie() } -const float kBigOffset = 5000; - - void GroupCookie::DoGroupLayout(SATWindow* triggerWindow) { @@ -68,7 +65,7 @@ GroupCookie::DoGroupLayout(SATWindow* triggerWindow) BRect frame = triggerWindow->CompleteWindowFrame(); // Make it also work for solver which don't support negative variables - frame.OffsetBy(kBigOffset, kBigOffset); + frame.OffsetBy(kMakePositiveOffset, kMakePositiveOffset); // adjust window size soft constraints fWidthConstraint->SetRightSide(frame.Width()); @@ -122,9 +119,10 @@ GroupCookie::MoveWindow(int32 workspace) Desktop* desktop = window->Desktop(); BRect frame = fSATWindow->CompleteWindowFrame(); - BRect frameSAT(fLeftBorder->Value() - kBigOffset, - fTopBorder->Value() - kBigOffset, fRightBorder->Value() - kBigOffset, - fBottomBorder->Value() - kBigOffset); + BRect frameSAT(fLeftBorder->Value() - kMakePositiveOffset, + fTopBorder->Value() - kMakePositiveOffset, + fRightBorder->Value() - kMakePositiveOffset, + fBottomBorder->Value() - kMakePositiveOffset); desktop->MoveWindowBy(window, round(frameSAT.left - frame.left), round(frameSAT.top - frame.top), workspace);