]> Dogcows Code - chaz/openbox/blobdiff - src/Screen.cc
Toolbar saves its settings as their changed
[chaz/openbox] / src / Screen.cc
index 239ed1b213e48f5d46fa02f56192a9fb4e820218..e1231b8b60a2a5eba7ba570f37a7dc94b3587af0 100644 (file)
@@ -99,6 +99,7 @@
 #define   FONT_ELEMENT_SIZE 50
 #endif // FONT_ELEMENT_SIZE
 
+#include <strstream>
 #include <string>
 #include <algorithm>
 
@@ -185,7 +186,9 @@ static const char *getFontSize(const char *pattern, int *size) {
 }
 
 
-BScreen::BScreen(Openbox &ob, int scrn) : ScreenInfo(ob, scrn), openbox(ob) {
+BScreen::BScreen(Openbox &ob, int scrn, Resource &conf) : ScreenInfo(ob, scrn),
+  openbox(ob), config(conf)
+{
   event_mask = ColormapChangeMask | EnterWindowMask | PropertyChangeMask |
               SubstructureRedirectMask | KeyPressMask | KeyReleaseMask |
               ButtonPressMask | ButtonReleaseMask;
@@ -416,10 +419,10 @@ BScreen::BScreen(Openbox &ob, int scrn) : ScreenInfo(ob, scrn), openbox(ob) {
   current_workspace = workspacesList->first();
   workspacemenu->setItemSelected(2, True);
 
-  toolbar = new Toolbar(*this);
+  toolbar = new Toolbar(*this, config);
 
 #ifdef    SLIT
-  slit = new Slit(*this);
+  slit = new Slit(*this, config);
 #endif // SLIT
 
   InitMenu();
@@ -821,8 +824,22 @@ XFontSet BScreen::createFontSet(const char *fontname) {
   return fs;
 }
 
+void BScreen::load() {
+  std::ostrstream rscreen, rname, rclass;
+  std::string s;
+  bool b;
+  long l;
+  rscreen << "session.screen" << getScreenNumber() << '.' << ends;
+
+  rname << rscreen.str() << "hideToolbar" << ends;
+  rclass << rscreen.str() << "HideToolbar" << ends;
+  if (config.getValue(rname.str(), rclass.str(), b))
+    resource.hide_toolbar = b;
+
+}
 
 void BScreen::reconfigure(void) {
+  load();
   LoadStyle();
 
   XGCValues gcv;
@@ -996,7 +1013,7 @@ void BScreen::removeWorkspaceNames(void) {
 
 
 void BScreen::LoadStyle(void) {
-  obResource &conf = resource.styleconfig;
+  Resource &conf = resource.styleconfig;
   
   conf.setFile(openbox.getStyleFilename());
   if (!conf.load()) {
@@ -1541,11 +1558,11 @@ void BScreen::raiseWindows(Window *workspace_stack, int num) {
     *(session_stack + i++) = tmp->getWindowID();
   *(session_stack + i++) = rootmenu->getWindowID();
 
-  if (toolbar->isOnTop())
+  if (toolbar->onTop())
     *(session_stack + i++) = toolbar->getWindowID();
 
 #ifdef    SLIT
-  if (slit->isOnTop())
+  if (slit->onTop())
     *(session_stack + i++) = slit->getWindowID();
 #endif // SLIT
 
@@ -2264,13 +2281,14 @@ void BScreen::hideGeometry(void) {
   }
 }
 
-void BScreen::saveToolbarHide(Bool b){
-  resource.toolbar_total_hide = b;
-  if (toolbar != NULL){
-    if (b)
-      toolbar->unMapToolbar();
-    else
-      toolbar->mapToolbar();
-  }
-
+void BScreen::setHideToolbar(bool b) {
+  resource.hide_toolbar = b;
+  if (resource.hide_toolbar)
+    getToolbar()->unMapToolbar();
+  else
+    getToolbar()->mapToolbar();
+  ostrstream s;
+  s << "session.screen" << getScreenNumber() << ".hideToolbar" << ends;
+  config.setValue(s.str(), resource.hide_toolbar ? "True" : "False");
 }
+
This page took 0.022495 seconds and 4 git commands to generate.