all repos — openbox @ 6a36505f8aa312ee2ccf0f173bc0fc6659664418

openbox fork - make it a bit more like ryudo

even more fixes for maximizing/placement with hidden slit/toolbar/etc
Dana Jansens danakj@orodu.net
commit

6a36505f8aa312ee2ccf0f173bc0fc6659664418

parent

2809005ab0ab761a831f4353f2ff190a62d92794

2 files changed, 40 insertions(+), 22 deletions(-)

jump to
M src/Window.ccsrc/Window.cc

@@ -1564,21 +1564,23 @@ (slit->placement() == Slit::TopLeft ||

slit->placement() == Slit::TopRight)) || slit->placement() == Slit::TopCenter) { // exclude top - if (tbartop) - space.setH(space.h() - slit_y); - else + if (tbartop && slit_y + slit->area().h() < tbarh) { + space.setY(space.y() + tbarh); space.setH(space.h() - tbarh); - 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 { + space.setY(space.y() + (slit_y + slit->area().h() + + screen->getBorderWidth() * 2)); + space.setH(space.h() - (slit_y + slit->area().h() + + screen->getBorderWidth() * 2)); + if (!tbartop) + space.setH(space.h() - tbarh); + } } else if ((slit->direction() == Slit::Vertical && (slit->placement() == Slit::TopRight || slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::CenterRight) { // exclude right - space.setW(space.w() - (screen->size().w() - slit_x + - screen->getBorderWidth() * 2)); + space.setW(space.w() - (screen->size().w() - slit_x)); if (tbartop) space.setY(space.y() + tbarh); space.setH(space.h() - tbarh);

@@ -1587,8 +1589,15 @@ (slit->placement() == Slit::BottomLeft ||

slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomCenter) { // exclude bottom - space.setH(space.h() - ((screen->size().h() - slit_y) > tbarh ? - screen->size().h() - slit_y : tbarh)); + if (!tbartop && (screen->size().h() - slit_y) < tbarh) { + space.setH(space.h() - tbarh); + } else { + space.setH(space.h() - (screen->size().h() - slit_y)); + if (tbartop) { + space.setY(space.y() + tbarh); + space.setH(space.h() - tbarh); + } + } } else {// if ((slit->direction() == Slit::Vertical && // (slit->placement() == Slit::TopLeft || // slit->placement() == Slit::BottomLeft)) ||
M src/Workspace.ccsrc/Workspace.cc

@@ -572,21 +572,23 @@ (slit->placement() == Slit::TopLeft ||

slit->placement() == Slit::TopRight)) || slit->placement() == Slit::TopCenter) { // exclude top - if (tbartop) - space.setH(space.h() - slit_y); - else + if (tbartop && slit_y + slit->area().h() < tbarh) { + space.setY(space.y() + tbarh); space.setH(space.h() - tbarh); - 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 { + space.setY(space.y() + (slit_y + slit->area().h() + + screen.getBorderWidth() * 2)); + space.setH(space.h() - (slit_y + slit->area().h() + + screen.getBorderWidth() * 2)); + if (!tbartop) + space.setH(space.h() - tbarh); + } } else if ((slit->direction() == Slit::Vertical && (slit->placement() == Slit::TopRight || slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::CenterRight) { // exclude right - space.setW(space.w() - (screen.size().w() - slit_x + - screen.getBorderWidth() * 2)); + space.setW(space.w() - (screen.size().w() - slit_x)); if (tbartop) space.setY(space.y() + tbarh); space.setH(space.h() - tbarh);

@@ -595,8 +597,15 @@ (slit->placement() == Slit::BottomLeft ||

slit->placement() == Slit::BottomRight)) || slit->placement() == Slit::BottomCenter) { // exclude bottom - space.setH(space.h() - ((screen.size().h() - slit_y) > tbarh ? - screen.size().h() - slit_y : tbarh)); + if (!tbartop && (screen.size().h() - slit_y) < tbarh) { + space.setH(space.h() - tbarh); + } else { + space.setH(space.h() - (screen.size().h() - slit_y)); + if (tbartop) { + space.setY(space.y() + tbarh); + space.setH(space.h() - tbarh); + } + } } else {// if ((slit->direction() == Slit::Vertical && // (slit->placement() == Slit::TopLeft || // slit->placement() == Slit::BottomLeft)) ||