maximize and placeWindow now behave properly when the slit is hidden
This commit is contained in:
parent
cf950146f7
commit
2809005ab0
2 changed files with 60 additions and 52 deletions
|
@ -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)) ||
|
||||||
|
|
109
src/Workspace.cc
109
src/Workspace.cc
|
@ -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 :
|
||||||
|
|
Loading…
Reference in a new issue