diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-04-27 19:25:20 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-04-27 19:25:20 +0000 |
| commit | e5685e3cfd3a44a6ac633617ca527a9f3173ccd4 (patch) | |
| tree | 364d79a483220ae8a3689e84e2f945dd38640f21 /src/Workspace.cc | |
| parent | fb96e47f2351c8d3235707653aeab3e9d29fa5ac (diff) | |
added BScreen::availableArea() which returns a rect specifying where windows can be placed on the screen, and what area they can fill when maximized
Diffstat (limited to 'src/Workspace.cc')
| -rw-r--r-- | src/Workspace.cc | 100 |
1 files changed, 1 insertions, 99 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc index b0cafdfb..1c290b75 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -581,105 +581,7 @@ Point *const Workspace::cascadePlacement(const OpenboxWindow *const win){ void Workspace::placeWindow(OpenboxWindow *win) { ASSERT(win != NULL); - // the following code is temporary and will be taken care of by Screen in the - // future (with the NETWM 'strut') - Rect space(0, 0, screen.size().w(), screen.size().h()); - -#ifdef SLIT - Slit *slit = screen.getSlit(); - int slit_x = slit->autoHide() ? slit->hiddenOrigin().x() : slit->area().x(), - slit_y = slit->autoHide() ? slit->hiddenOrigin().y() : slit->area().y(); - Toolbar *toolbar = screen.getToolbar(); - int tbarh = screen.hideToolbar() ? 0 : - toolbar->getExposedHeight() + screen.getBorderWidth() * 2; - bool tbartop; - switch (toolbar->placement()) { - case Toolbar::TopLeft: - case Toolbar::TopCenter: - case Toolbar::TopRight: - tbartop = true; - break; - case Toolbar::BottomLeft: - case Toolbar::BottomCenter: - case Toolbar::BottomRight: - tbartop = false; - break; - default: - ASSERT(false); // unhandled placement - } - if ((slit->direction() == Slit::Horizontal && - (slit->placement() == Slit::TopLeft || - slit->placement() == Slit::TopRight)) || - slit->placement() == Slit::TopCenter) { - // exclude top - if (tbartop && slit_y + slit->area().h() < tbarh) { - space.setY(space.y() + tbarh); - space.setH(space.h() - tbarh); - } 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)); - if (tbartop) - space.setY(space.y() + tbarh); - space.setH(space.h() - tbarh); - } else if ((slit->direction() == Slit::Horizontal && - (slit->placement() == Slit::BottomLeft || - slit->placement() == Slit::BottomRight)) || - slit->placement() == Slit::BottomCenter) { - // exclude bottom - 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)) || - // slit->placement() == Slit::CenterLeft) - // exclude left - space.setX(slit_x + slit->area().w() + - screen.getBorderWidth() * 2); - space.setW(space.w() - (slit_x + slit->area().w() + - screen.getBorderWidth() * 2)); - if (tbartop) - space.setY(space.y() + tbarh); - space.setH(space.h() - tbarh); - } -#else // !SLIT - Toolbar *toolbar = screen.getToolbar(); - int tbarh = screen.hideToolbar() ? 0 : - toolbar->getExposedHeight() + screen.getBorderWidth() * 2; - switch (toolbar->placement()) { - case Toolbar::TopLeft: - case Toolbar::TopCenter: - case Toolbar::TopRight: - space.setY(toolbar->getExposedHeight()); - space.setH(space.h() - toolbar->getExposedHeight()); - break; - case Toolbar::BottomLeft: - case Toolbar::BottomCenter: - case Toolbar::BottomRight: - space.setH(space.h() - tbarh); - break; - default: - ASSERT(false); // unhandled placement - } -#endif // SLIT - + Rect space = screen.availableArea(); const Size window_size(win->area().w()+screen.getBorderWidth() * 4, win->area().h()+screen.getBorderWidth() * 4); Point *place = NULL; |
