]> Dogcows Code - chaz/openbox/blobdiff - src/Toolbar.cc
added "Hide Toolbar" option.
[chaz/openbox] / src / Toolbar.cc
index 5ff333ad9c6a6501fd97f1cf2325904ebe6ab61a..447e0d033e9c621cff7a94d2bbed5f319ea40e52 100644 (file)
@@ -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,16 @@ 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);
+  if (! screen->doHideToolbar()) {
+    switch(placement) {
+    case TopLeft:
+    case TopCenter:
+    case TopRight:
+      strut.top = getExposedHeight() + (screen->getBorderWidth() * 2);
+      break;
+    default:
+      strut.bottom = getExposedHeight() + (screen->getBorderWidth() * 2);
+    }
   }
 
   screen->updateAvailableArea();
This page took 0.026396 seconds and 4 git commands to generate.