diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-04-22 18:59:04 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-04-22 18:59:04 +0000 |
| commit | 6f2064b1869ed9816fe1756252ad4fd66de9190b (patch) | |
| tree | 580c92cbc1b529b33c79fd33e23590a29a5d3396 /src | |
| parent | 75c0a76a53bc31b162590fc767f5b2fe73ad07df (diff) | |
posible fix for maximizing when slit is auto-hidden
Diffstat (limited to 'src')
| -rw-r--r-- | src/Slit.h | 1 | ||||
| -rw-r--r-- | src/Window.cc | 26 |
2 files changed, 17 insertions, 10 deletions
@@ -133,6 +133,7 @@ public: inline const Point &origin() const { return frame.area.origin(); } inline const Size &size() const { return frame.area.size(); } inline const Rect &area() const { return frame.area; } + inline const Point &hiddenOrigin() const { return frame.hidden; } void addClient(Window); void removeClient(SlitClient *, Bool = True); diff --git a/src/Window.cc b/src/Window.cc index 73291228..6a057a75 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -1539,6 +1539,8 @@ void OpenboxWindow::maximize(unsigned int button) { if (! screen->fullMax()) { #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; @@ -1562,19 +1564,21 @@ void OpenboxWindow::maximize(unsigned int button) { slit->placement() == Slit::TopRight)) || slit->placement() == Slit::TopCenter) { // exclude top - if (tbartop) { - space.setY(slit->area().y()); - space.setH(space.h() - space.y()); - } else + if (tbartop) + space.setH(space.h() - slit_y); + else space.setH(space.h() - tbarh); - space.setY(space.y() + slit->area().h() + screen->getBorderWidth() * 2); - space.setH(space.h() - (slit->area().h() + screen->getBorderWidth() * 2)); + 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 if ((slit->direction() == Slit::Vertical && (slit->placement() == Slit::TopRight || slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::CenterRight) { // exclude right - space.setW(space.w() - (slit->area().w() + screen->getBorderWidth() * 2)); + space.setW(space.w() - (screen->size().w() - slit_x + + screen->getBorderWidth() * 2)); if (tbartop) space.setY(space.y() + tbarh); space.setH(space.h() - tbarh); @@ -1583,14 +1587,16 @@ void OpenboxWindow::maximize(unsigned int button) { slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomCenter) { // exclude bottom - space.setH(space.h() - (screen->size().h() - slit->area().y())); + space.setH(space.h() - (screen->size().h() - slit_y)); } else {// if ((slit->direction() == Slit::Vertical && // (slit->placement() == Slit::TopLeft || // slit->placement() == Slit::BottomLeft)) || // slit->placement() == Slit::CenterLeft) // exclude left - space.setX(slit->area().w() + screen->getBorderWidth() * 2); - space.setW(space.w() - (slit->area().w() + screen->getBorderWidth() * 2)); + 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); |
