maximize and placeWindow now behave properly when the slit is hidden

This commit is contained in:
Dana Jansens 2002-04-22 22:24:15 +00:00
parent cf950146f7
commit 2809005ab0
2 changed files with 60 additions and 52 deletions

View file

@ -1587,7 +1587,8 @@ void OpenboxWindow::maximize(unsigned int button) {
slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomRight)) ||
slit->placement() == Slit::BottomCenter) { slit->placement() == Slit::BottomCenter) {
// exclude bottom // exclude bottom
space.setH(space.h() - (screen->size().h() - slit_y)); space.setH(space.h() - ((screen->size().h() - slit_y) > tbarh ?
screen->size().h() - slit_y : tbarh));
} else {// if ((slit->direction() == Slit::Vertical && } else {// if ((slit->direction() == Slit::Vertical &&
// (slit->placement() == Slit::TopLeft || // (slit->placement() == Slit::TopLeft ||
// slit->placement() == Slit::BottomLeft)) || // slit->placement() == Slit::BottomLeft)) ||

View file

@ -546,63 +546,70 @@ void Workspace::placeWindow(OpenboxWindow *win) {
Rect space(0, 0, screen.size().w(), screen.size().h()); Rect space(0, 0, screen.size().w(), screen.size().h());
#ifdef SLIT #ifdef SLIT
Slit *slit = screen.getSlit(); Slit *slit = screen.getSlit();
Toolbar *toolbar = screen.getToolbar(); int slit_x = slit->autoHide() ? slit->hiddenOrigin().x() : slit->area().x(),
int tbarh = screen.hideToolbar() ? 0 : slit_y = slit->autoHide() ? slit->hiddenOrigin().y() : slit->area().y();
toolbar->getExposedHeight() + screen.getBorderWidth() * 2; Toolbar *toolbar = screen.getToolbar();
bool tbartop; int tbarh = screen.hideToolbar() ? 0 :
switch (toolbar->placement()) { toolbar->getExposedHeight() + screen.getBorderWidth() * 2;
case Toolbar::TopLeft: bool tbartop;
case Toolbar::TopCenter: switch (toolbar->placement()) {
case Toolbar::TopRight: case Toolbar::TopLeft:
tbartop = true; case Toolbar::TopCenter:
break; case Toolbar::TopRight:
case Toolbar::BottomLeft: tbartop = true;
case Toolbar::BottomCenter: break;
case Toolbar::BottomRight: case Toolbar::BottomLeft:
tbartop = false; case Toolbar::BottomCenter:
break; case Toolbar::BottomRight:
default: tbartop = false;
ASSERT(false); // unhandled placement break;
} default:
if ((slit->direction() == Slit::Horizontal && ASSERT(false); // unhandled placement
(slit->placement() == Slit::TopLeft || }
slit->placement() == Slit::TopRight)) || if ((slit->direction() == Slit::Horizontal &&
slit->placement() == Slit::TopCenter) { (slit->placement() == Slit::TopLeft ||
// exclude top slit->placement() == Slit::TopRight)) ||
if (tbartop) { slit->placement() == Slit::TopCenter) {
space.setY(slit->area().y()); // exclude top
space.setH(space.h() - space.y()); if (tbartop)
} else space.setH(space.h() - slit_y);
space.setH(space.h() - tbarh); else
space.setY(space.y() + slit->area().h() + screen.getBorderWidth() * 2); space.setH(space.h() - tbarh);
space.setH(space.h() - (slit->area().h() + screen.getBorderWidth() * 2)); space.setY(space.y() + slit_y + slit->area().h() +
} else if ((slit->direction() == Slit::Vertical && 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::TopRight ||
slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomRight)) ||
slit->placement() == Slit::CenterRight) { slit->placement() == Slit::CenterRight) {
// exclude right // exclude right
space.setW(space.w() - (slit->area().w() + screen.getBorderWidth() * 2)); space.setW(space.w() - (screen.size().w() - slit_x +
if (tbartop) screen.getBorderWidth() * 2));
space.setY(space.y() + tbarh); if (tbartop)
space.setH(space.h() - tbarh); space.setY(space.y() + tbarh);
} else if ((slit->direction() == Slit::Horizontal && space.setH(space.h() - tbarh);
} else if ((slit->direction() == Slit::Horizontal &&
(slit->placement() == Slit::BottomLeft || (slit->placement() == Slit::BottomLeft ||
slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomRight)) ||
slit->placement() == Slit::BottomCenter) { slit->placement() == Slit::BottomCenter) {
// exclude bottom // exclude bottom
space.setH(space.h() - (screen.size().h() - slit->area().y())); space.setH(space.h() - ((screen.size().h() - slit_y) > tbarh ?
} else {// if ((slit->direction() == Slit::Vertical && screen.size().h() - slit_y : tbarh));
// (slit->placement() == Slit::TopLeft || } else {// if ((slit->direction() == Slit::Vertical &&
// slit->placement() == Slit::BottomLeft)) || // (slit->placement() == Slit::TopLeft ||
// slit->placement() == Slit::CenterLeft) // slit->placement() == Slit::BottomLeft)) ||
// exclude left // slit->placement() == Slit::CenterLeft)
space.setX(slit->area().w() + screen.getBorderWidth() * 2); // exclude left
space.setW(space.w() - (slit->area().w() + screen.getBorderWidth() * 2)); space.setX(slit_x + slit->area().w() +
if (tbartop) screen.getBorderWidth() * 2);
space.setY(space.y() + tbarh); space.setW(space.w() - (slit_x + slit->area().w() +
space.setH(space.h() - tbarh); screen.getBorderWidth() * 2));
} if (tbartop)
space.setY(space.y() + tbarh);
space.setH(space.h() - tbarh);
}
#else // !SLIT #else // !SLIT
Toolbar *toolbar = screen.getToolbar(); Toolbar *toolbar = screen.getToolbar();
int tbarh = screen.hideToolbar() ? 0 : int tbarh = screen.hideToolbar() ? 0 :