X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FToolbar.cc;h=9c7c2fafbbce319de7ee4099302446c87145f688;hb=f4c0547b7a90c9647a2c39c3d1a737142eab088e;hp=5ff333ad9c6a6501fd97f1cf2325904ebe6ab61a;hpb=0305cbdc3ae8525c74b2bb9b23884035549e3407;p=chaz%2Fopenbox diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 5ff333ad..9c7c2faf 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(); @@ -955,6 +979,7 @@ void Toolbar::keyPressEvent(XKeyEvent *ke) { Workspace *wkspc = screen->getCurrentWorkspace(); wkspc->setName(new_workspace_name); + screen->updateDesktopNames(); wkspc->getMenu()->hide(); screen->getWorkspacemenu()->changeItemLabel(wkspc->getID() + 2,