posible fix for maximizing when slit is auto-hidden

This commit is contained in:
Dana Jansens 2002-04-22 18:59:04 +00:00
parent 75c0a76a53
commit 6f2064b186
2 changed files with 17 additions and 10 deletions

View file

@ -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);

View file

@ -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);