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
This commit is contained in:
@@ -467,14 +467,14 @@ Tab::~Tab()
|
|||||||
float
|
float
|
||||||
Tab::Position() const
|
Tab::Position() const
|
||||||
{
|
{
|
||||||
return (float)fVariable->Value();
|
return (float)fVariable->Value() - kMakePositiveOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Tab::SetPosition(float position)
|
Tab::SetPosition(float position)
|
||||||
{
|
{
|
||||||
fVariable->SetValue(position);
|
fVariable->SetValue(position + kMakePositiveOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,10 @@ class SATGroup;
|
|||||||
typedef BObjectList<Crossing> CrossingList;
|
typedef BObjectList<Crossing> CrossingList;
|
||||||
|
|
||||||
|
|
||||||
|
// make all coordinates positive needed for the solver
|
||||||
|
const float kMakePositiveOffset = 5000;
|
||||||
|
|
||||||
|
|
||||||
class Tab : public BReferenceable {
|
class Tab : public BReferenceable {
|
||||||
public:
|
public:
|
||||||
enum orientation_t
|
enum orientation_t
|
||||||
|
|||||||
@@ -57,9 +57,6 @@ GroupCookie::~GroupCookie()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const float kBigOffset = 5000;
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GroupCookie::DoGroupLayout(SATWindow* triggerWindow)
|
GroupCookie::DoGroupLayout(SATWindow* triggerWindow)
|
||||||
{
|
{
|
||||||
@@ -68,7 +65,7 @@ GroupCookie::DoGroupLayout(SATWindow* triggerWindow)
|
|||||||
|
|
||||||
BRect frame = triggerWindow->CompleteWindowFrame();
|
BRect frame = triggerWindow->CompleteWindowFrame();
|
||||||
// Make it also work for solver which don't support negative variables
|
// 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
|
// adjust window size soft constraints
|
||||||
fWidthConstraint->SetRightSide(frame.Width());
|
fWidthConstraint->SetRightSide(frame.Width());
|
||||||
@@ -122,9 +119,10 @@ GroupCookie::MoveWindow(int32 workspace)
|
|||||||
Desktop* desktop = window->Desktop();
|
Desktop* desktop = window->Desktop();
|
||||||
|
|
||||||
BRect frame = fSATWindow->CompleteWindowFrame();
|
BRect frame = fSATWindow->CompleteWindowFrame();
|
||||||
BRect frameSAT(fLeftBorder->Value() - kBigOffset,
|
BRect frameSAT(fLeftBorder->Value() - kMakePositiveOffset,
|
||||||
fTopBorder->Value() - kBigOffset, fRightBorder->Value() - kBigOffset,
|
fTopBorder->Value() - kMakePositiveOffset,
|
||||||
fBottomBorder->Value() - kBigOffset);
|
fRightBorder->Value() - kMakePositiveOffset,
|
||||||
|
fBottomBorder->Value() - kMakePositiveOffset);
|
||||||
|
|
||||||
desktop->MoveWindowBy(window, round(frameSAT.left - frame.left),
|
desktop->MoveWindowBy(window, round(frameSAT.left - frame.left),
|
||||||
round(frameSAT.top - frame.top), workspace);
|
round(frameSAT.top - frame.top), workspace);
|
||||||
|
|||||||
Reference in New Issue
Block a user