summaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-04-22 23:00:57 +0000
committerDana Jansens <danakj@orodu.net>2002-04-22 23:00:57 +0000
commit6a36505f8aa312ee2ccf0f173bc0fc6659664418 (patch)
tree389974a61bf157e98c1fe4674896f26039bdc3c4 /src/Workspace.cc
parent2809005ab0ab761a831f4353f2ff190a62d92794 (diff)
even more fixes for maximizing/placement with hidden slit/toolbar/etc
Diffstat (limited to 'src/Workspace.cc')
-rw-r--r--src/Workspace.cc31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 45dc2bc3..27afcade 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -572,21 +572,23 @@ void Workspace::placeWindow(OpenboxWindow *win) {
slit->placement() == Slit::TopRight)) ||
slit->placement() == Slit::TopCenter) {
// exclude top
- if (tbartop)
- space.setH(space.h() - slit_y);
- else
+ if (tbartop && slit_y + slit->area().h() < tbarh) {
+ space.setY(space.y() + tbarh);
space.setH(space.h() - tbarh);
- space.setY(space.y() + slit_y + slit->area().h() +
- screen.getBorderWidth() * 2);
- space.setH(space.h() - (slit_y + slit->area().h() +
- screen.getBorderWidth() * 2));
+ } else {
+ space.setY(space.y() + (slit_y + slit->area().h() +
+ screen.getBorderWidth() * 2));
+ space.setH(space.h() - (slit_y + slit->area().h() +
+ screen.getBorderWidth() * 2));
+ if (!tbartop)
+ space.setH(space.h() - tbarh);
+ }
} else if ((slit->direction() == Slit::Vertical &&
(slit->placement() == Slit::TopRight ||
slit->placement() == Slit::BottomRight)) ||
slit->placement() == Slit::CenterRight) {
// exclude right
- space.setW(space.w() - (screen.size().w() - slit_x +
- screen.getBorderWidth() * 2));
+ space.setW(space.w() - (screen.size().w() - slit_x));
if (tbartop)
space.setY(space.y() + tbarh);
space.setH(space.h() - tbarh);
@@ -595,8 +597,15 @@ void Workspace::placeWindow(OpenboxWindow *win) {
slit->placement() == Slit::BottomRight)) ||
slit->placement() == Slit::BottomCenter) {
// exclude bottom
- space.setH(space.h() - ((screen.size().h() - slit_y) > tbarh ?
- screen.size().h() - slit_y : tbarh));
+ if (!tbartop && (screen.size().h() - slit_y) < tbarh) {
+ space.setH(space.h() - tbarh);
+ } else {
+ space.setH(space.h() - (screen.size().h() - slit_y));
+ if (tbartop) {
+ space.setY(space.y() + tbarh);
+ space.setH(space.h() - tbarh);
+ }
+ }
} else {// if ((slit->direction() == Slit::Vertical &&
// (slit->placement() == Slit::TopLeft ||
// slit->placement() == Slit::BottomLeft)) ||