X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FToolbar.cc;h=55beb59de8898204a18aea5194ea5e90a227ff5d;hb=9aaf4f8de762a540780aaef54d15802762dc4130;hp=5ff333ad9c6a6501fd97f1cf2325904ebe6ab61a;hpb=0305cbdc3ae8525c74b2bb9b23884035549e3407;p=chaz%2Fopenbox diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 5ff333ad..55beb59d 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -161,14 +161,12 @@ Toolbar::Toolbar(BScreen *scrn) { screen->addStrut(&strut); reconfigure(); - - XMapSubwindows(display, frame.window); - XMapWindow(display, frame.window); + mapToolbar(); } Toolbar::~Toolbar(void) { - XUnmapWindow(display, frame.window); + unmapToolbar(); if (frame.base) screen->getImageControl()->removeImage(frame.base); if (frame.label) screen->getImageControl()->removeImage(frame.label); @@ -198,6 +196,25 @@ Toolbar::~Toolbar(void) { } +void Toolbar::mapToolbar() { + if (!screen->doHideToolbar()) { + //not hidden, so windows should not maximize over the toolbar + XMapSubwindows(display, frame.window); + XMapWindow(display, frame.window); + } + updateStrut(); +} + + +void Toolbar::unmapToolbar() { + if (toolbarmenu->isVisible()) + toolbarmenu->hide(); + //hidden so we can maximize over the toolbar + XUnmapWindow(display, frame.window); + updateStrut(); +} + + void Toolbar::saveOnTop(bool b) { on_top = b; config->setValue(toolbarstr + "onTop", on_top); @@ -511,14 +528,21 @@ void Toolbar::updateStrut(void) { // left and right are always 0 strut.top = strut.bottom = 0; - switch(placement) { - case TopLeft: - case TopCenter: - case TopRight: - strut.top = getExposedHeight() + (screen->getBorderWidth() * 2); - break; - default: - strut.bottom = getExposedHeight() + (screen->getBorderWidth() * 2); + // when hidden only one border is visible + unsigned int border_width = screen->getBorderWidth(); + if (! do_auto_hide) + border_width *= 2; + + if (! screen->doHideToolbar()) { + switch(placement) { + case TopLeft: + case TopCenter: + case TopRight: + strut.top = getExposedHeight() + border_width; + break; + default: + strut.bottom = getExposedHeight() + border_width; + } } screen->updateAvailableArea();