diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-04-21 03:36:09 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-04-21 03:36:09 +0000 |
| commit | e1b78a1f8435d4248878091ad9e9fb84944c14a7 (patch) | |
| tree | a9d99ddc32ef21cdffc5ff285ddf612b59a3e58f /src/Workspace.cc | |
| parent | 18499a6920309d6ddfe70767f8a90e2778a96ba7 (diff) | |
even better bestfit placement. way to go colophon!
Diffstat (limited to 'src/Workspace.cc')
| -rw-r--r-- | src/Workspace.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc index 70b043c0..4b6c23b4 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -391,11 +391,14 @@ Point *Workspace::bestFitPlacement(const Size &win_size, const Rect &space) //Find first space that fits the window best = NULL; for (siter=spaces.begin(); siter!=spaces.end(); ++siter) { - if ((siter->w() >= win_size.w()) && - (siter->h() >= win_size.h())) - best = siter; + if ((siter->w() >= win_size.w()) && (siter->h() >= win_size.h())) { + if (best == NULL) + best = siter; + else if (win_size.w() * win_size.h() - siter->w() * siter->h() < + best->w() + best->h()) + best = siter; + } } - if (best != NULL) { Point *pt = new Point(best->origin()); if (screen.colPlacementDirection() != BScreen::TopBottom) |
