The current solver don't like big values.

- Check the constraint values first.
- Some cleanup.
This commit is contained in:
czeidler 2012-10-11 11:50:03 +13:00
parent 323abd9b89
commit d6977957a0
1 changed files with 12 additions and 5 deletions

View File

@ -215,6 +215,16 @@ WindowArea::_UpdateConstraintValues()
if (maxHeight < maxH)
maxHeight = maxH;
}
// the current solver don't like big values
const int32 kMaxSolverValue = 5000;
if (minWidth > kMaxSolverValue)
minWidth = kMaxSolverValue;
if (minHeight > kMaxSolverValue)
minHeight = kMaxSolverValue;
if (maxWidth > kMaxSolverValue)
maxWidth = kMaxSolverValue;
if (maxHeight > kMaxSolverValue)
maxHeight = kMaxSolverValue;
topWindow->AddDecorator(&minWidth, &maxWidth, &minHeight, &maxHeight);
fMinWidthConstraint->SetRightSide(minWidth);
@ -501,14 +511,10 @@ WindowArea::_MoveToSAT(SATWindow* triggerWindow)
if (topWindow == NULL)
return;
int32 workspace = triggerWindow->GetWindow()->CurrentWorkspace();
Desktop* desktop = triggerWindow->GetWindow()->Desktop();
BRect frameSAT(LeftVar()->Value() - kMakePositiveOffset,
TopVar()->Value() - kMakePositiveOffset,
RightVar()->Value() - kMakePositiveOffset,
BottomVar()->Value() - kMakePositiveOffset);
topWindow->AdjustSizeLimits(frameSAT);
BRect frame = topWindow->CompleteWindowFrame();
@ -518,12 +524,13 @@ WindowArea::_MoveToSAT(SATWindow* triggerWindow)
float deltaByX = round(frameSAT.right - frame.right);
float deltaByY = round(frameSAT.bottom - frame.bottom);
int32 workspace = triggerWindow->GetWindow()->CurrentWorkspace();
Desktop* desktop = triggerWindow->GetWindow()->Desktop();
desktop->MoveWindowBy(topWindow->GetWindow(), deltaToX, deltaToY,
workspace);
// Update frame to the new position
desktop->ResizeWindowBy(topWindow->GetWindow(), deltaByX, deltaByY);
UpdateSizeConstaints(frameSAT);
}