From 6f2064b1869ed9816fe1756252ad4fd66de9190b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 22 Apr 2002 18:59:04 +0000 Subject: [PATCH] posible fix for maximizing when slit is auto-hidden --- src/Slit.h | 1 + src/Window.cc | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Slit.h b/src/Slit.h index f7feb6b1..89d76daf 100644 --- a/src/Slit.h +++ b/src/Slit.h @@ -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); -- 2.45.2