summaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-04-21 03:36:09 +0000
committerDana Jansens <danakj@orodu.net>2002-04-21 03:36:09 +0000
commite1b78a1f8435d4248878091ad9e9fb84944c14a7 (patch)
treea9d99ddc32ef21cdffc5ff285ddf612b59a3e58f /src/Workspace.cc
parent18499a6920309d6ddfe70767f8a90e2778a96ba7 (diff)
even better bestfit placement. way to go colophon!
Diffstat (limited to 'src/Workspace.cc')
-rw-r--r--src/Workspace.cc11
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)