]> Dogcows Code - chaz/openbox/commitdiff
Added a runtime option for hiding the toolbar totally. Will be cleaner
authorScott Moynes <smoynes@nexus.carleton.ca>
Tue, 16 Apr 2002 20:22:01 +0000 (20:22 +0000)
committerScott Moynes <smoynes@nexus.carleton.ca>
Tue, 16 Apr 2002 20:22:01 +0000 (20:22 +0000)
later. Stay tuned.

CHANGELOG
nls/C/Configmenu.m
src/Configmenu.cc
src/Screen.cc
src/Screen.h
src/Toolbar.cc
src/Toolbar.h
src/openbox.cc

index 1a0ebc81819991932aaf1a9096ec0468acd54a00..1460b9b4502b7a3df3d81869afba2e6b0e8ada8b 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,8 @@
 Changelog for Openbox:
 
 1.0.0:
+ * added a runtime option for hiding the toolbar.       (Scott Moynes)
+       
  * made shaded windows edge-snap correctly to the
    bottom for their size instead for their unshaded
    size.                                                (Ben Jansens)
index f06413558c1cc8aca8077e8eef45f1f2c511a202..741e468d2159f69d854d59423d197363337745ff 100644 (file)
@@ -38,3 +38,5 @@ $ #TopBottom
 # Top to Bottom
 $ #BottomTop
 # Bottom to Top
+$ #HideToolbar
+# Hide Toolbar
index 6a00463eec5c8f626236c03acf0939c1b97eecd8..9f09eb76e8c5d07555e6e220d3499d53f070239f 100644 (file)
@@ -59,6 +59,8 @@ Configmenu::Configmenu(BScreen &scr) : Basemenu(scr), screen(scr)
                          "Focus New Windows"), 4);
   insert(i18n->getMessage(ConfigmenuSet, ConfigmenuFocusLast,
                          "Focus Last Window on Workspace"), 5);
+  insert(i18n->getMessage(ConfigmenuSet, ConfigmenuHideToolbar,
+                         "Hide toolbar"), 6);
   update();
 
   setItemSelected(2, screen.getImageControl()->doDither());
@@ -66,6 +68,7 @@ Configmenu::Configmenu(BScreen &scr) : Basemenu(scr), screen(scr)
   setItemSelected(4, screen.doFullMax());
   setItemSelected(5, screen.doFocusNew());
   setItemSelected(6, screen.doFocusLast());
+  setItemSelected(7, screen.doToolbarHide());
 }
 
 Configmenu::~Configmenu(void) {
@@ -115,10 +118,15 @@ void Configmenu::itemSelected(int button, int index) {
   }
 
   case 5: { // focus last window on workspace
-    screen.saveFocusLast((! screen.doFocusLast()));
+    screen.saveFocusLast(!(screen.doFocusLast()));
     setItemSelected(index, screen.doFocusLast());
     break;
   }
+  case 6:{ //toggle toolbar hide
+    screen.saveToolbarHide(!(screen.doToolbarHide()));
+    setItemSelected(index, screen.doToolbarHide());
+    break;
+  }
   } // switch
 }
 
@@ -205,7 +213,7 @@ Configmenu::Placementmenu::Placementmenu(Configmenu *cm) :
   setLabel(i18n->getMessage(ConfigmenuSet, ConfigmenuWindowPlacement,
                            "Window Placement"));
   setInternalMenu();
-
+  
   insert(i18n->getMessage(ConfigmenuSet, ConfigmenuSmartRows,
                          "Smart Placement (Rows)"),
         BScreen::RowSmartPlacement);
index 4d9c66fac6248f86e252236c2d7e413bce560e7a..239ed1b213e48f5d46fa02f56192a9fb4e820218 100644 (file)
@@ -2257,10 +2257,20 @@ void BScreen::showGeometry(unsigned int gx, unsigned int gy) {
   }
 }
 
-
 void BScreen::hideGeometry(void) {
   if (geom_visible) {
     XUnmapWindow(getBaseDisplay().getXDisplay(), geom_window);
     geom_visible = False;
   }
 }
+
+void BScreen::saveToolbarHide(Bool b){
+  resource.toolbar_total_hide = b;
+  if (toolbar != NULL){
+    if (b)
+      toolbar->unMapToolbar();
+    else
+      toolbar->mapToolbar();
+  }
+
+}
index bdeeaca5e92d1f541adeb5e882b186609beb4dcb..14dbff2140cc3936634a1b4cac9d7273c7bd281c 100644 (file)
@@ -133,7 +133,7 @@ private:
 
     Bool toolbar_on_top, toolbar_auto_hide, sloppy_focus, auto_raise,
       auto_edge_balance, image_dither, ordered_dither, opaque_move, full_max,
-      focus_new, focus_last;
+      focus_new, focus_last, toolbar_total_hide;
     BColor border_color;
     obResource styleconfig;
 
@@ -182,6 +182,8 @@ public:
   { return resource.toolbar_on_top; }
   inline const Bool &doToolbarAutoHide(void) const
   { return resource.toolbar_auto_hide; }
+  inline const Bool &doToolbarHide(void) const
+    {return resource.toolbar_total_hide;}
   inline const Bool &isSloppyFocus(void) const
   { return resource.sloppy_focus; }
   inline const Bool &isRootColormapInstalled(void) const
@@ -289,7 +291,6 @@ public:
   inline void saveFocusNew(Bool f) { resource.focus_new = f; }
   inline void saveFocusLast(Bool f) { resource.focus_last = f; }
   inline void iconUpdate(void) { iconmenu->update(); }
-
 #ifdef    HAVE_STRFTIME
   inline char *getStrftimeFormat(void) { return resource.strftime_format; }
   void saveStrftimeFormat(const char *);
@@ -328,7 +329,7 @@ public:
   void showPosition(int, int);
   void showGeometry(unsigned int, unsigned int);
   void hideGeometry(void);
-
+  void saveToolbarHide( Bool b);
   void updateNetizenCurrentWorkspace(void);
   void updateNetizenWorkspaceCount(void);
   void updateNetizenWindowFocus(void);
index 9f7c3b8098be9c209dfc8d90fa8e3dc04377646c..6d5a5ac48fbf8a8edc1e0daad03927ada8e7a205 100644 (file)
@@ -43,9 +43,9 @@
 
 #include <X11/keysym.h>
 
-#ifdef    HAVE_STRING_H
+#ifdef    STDC_HEADERS
 #  include <string.h>
-#endif // HAVE_STRING_H
+#endif // STDC_HEADERS
 
 #ifdef    HAVE_STDIO_H
 #  include <stdio.h>
@@ -148,15 +148,24 @@ Toolbar::Toolbar(BScreen &scrn) : screen(scrn), openbox(scrn.getOpenbox()) {
     frame.pbutton = None;
 
   reconfigure();
-
-  XMapSubwindows(display, frame.window);
-  XMapWindow(display, frame.window);
+  mapToolbar();
 }
 
-
-Toolbar::~Toolbar(void) {
+inline void Toolbar::mapToolbar(){
+  if(!screen.doToolbarHide()){
+    do_hide=false;//not hidden, so windows should not maximize over the toolbar
+    XMapSubwindows(display, frame.window);
+    XMapWindow(display, frame.window);
+  }else
+    do_hide=true;
+}
+inline void Toolbar::unMapToolbar(){
+  do_hide=true; //hidden so we can maximize over the toolbar
   XUnmapWindow(display, frame.window);
+}
 
+Toolbar::~Toolbar(void) {
+  unMapToolbar();
   if (frame.base) image_ctrl->removeImage(frame.base);
   if (frame.label) image_ctrl->removeImage(frame.label);
   if (frame.wlabel) image_ctrl->removeImage(frame.wlabel);
@@ -467,7 +476,7 @@ void Toolbar::reconfigure(void) {
   XClearWindow(display, frame.nsbutton);
   XClearWindow(display, frame.pwbutton);
   XClearWindow(display, frame.nwbutton);
-
+  
   redrawWindowLabel();
   redrawWorkspaceLabel();
   redrawPrevWorkspaceButton();
@@ -475,7 +484,7 @@ void Toolbar::reconfigure(void) {
   redrawPrevWindowButton();
   redrawNextWindowButton();
   checkClock(True);
-
+  
   toolbarmenu->reconfigure();
 }
 
index 45962c95ef882b8cd323f0aa8c8227de87cb8517..47a9dd2c388088ec23624c3cc02a4d8c0f682b86 100644 (file)
@@ -67,7 +67,7 @@ public:
 
 class Toolbar : public TimeoutHandler {
 private:
-  Bool on_top, editing, hidden, do_auto_hide;
+  Bool on_top, editing, hidden, do_auto_hide, do_hide;
   Display *display;
 
   struct frame {
@@ -117,13 +117,17 @@ public:
 
   inline const unsigned int &getWidth(void) const { return frame.width; }
   inline const unsigned int &getHeight(void) const { return frame.height; }
-  inline const unsigned int &getExposedHeight(void) const
-  { return ((do_auto_hide) ? frame.bevel_w : frame.height); }
+  inline const unsigned int getExposedHeight(void) const {
+    if (do_hide) return 0;
+    else if (do_auto_hide) return frame.bevel_w;
+    else return frame.height;
+  }
+  
   inline const int &getX(void) const
   { return ((hidden) ? frame.x_hidden : frame.x); }
-  inline const int &getY(void) const
-  { return ((hidden) ? frame.y_hidden : frame.y); }
-
+  inline const int getY(void) const 
+    { return ((hidden || do_hide) ? frame.y_hidden : frame.y); }
+  
   void buttonPressEvent(XButtonEvent *);
   void buttonReleaseEvent(XButtonEvent *);
   void enterNotifyEvent(XCrossingEvent *);
@@ -139,7 +143,8 @@ public:
   void redrawNextWindowButton(Bool = False, Bool = False);
   void edit(void);
   void reconfigure(void);
-
+  void mapToolbar(void);
+  void unMapToolbar(void);
 #ifdef    HAVE_STRFTIME
   void checkClock(Bool = False);
 #else //  HAVE_STRFTIME
index 83c3e3d2bb660621affa86c957b66ff288af30e8..641235213bc865dedba9fb8665fab05de966444b 100644 (file)
@@ -1072,6 +1072,11 @@ void Openbox::save_rc(void) {
     config.setValue(rc_string, screen->getToolbar()->doAutoHide() ?
                     "True" : "False");
 
+    sprintf(rc_string, "session.screen%d.toolbar.hide", screen_number);
+    config.setValue(rc_string, screen->doToolbarHide() ?
+                    "True" : "False");
+
+
     switch (screen->getToolbarPlacement()) {
     case Toolbar::TopLeft: placement = "TopLeft"; break;
     case Toolbar::BottomLeft: placement = "BottomLeft"; break;
@@ -1328,6 +1333,13 @@ void Openbox::load_rc(BScreen *screen) {
   else
     screen->saveToolbarOnTop(False);
 
+  sprintf(name_lookup,  "session.screen%d.toolbar.hide", screen_number);
+  sprintf(class_lookup, "Session.Screen%d.Toolbar.Hide", screen_number);
+  if (config.getValue(name_lookup, class_lookup, b))
+    screen->saveToolbarHide((Bool)b);
+  else
+    screen->saveToolbarHide(False);
+
   sprintf(name_lookup,  "session.screen%d.toolbar.autoHide", screen_number);
   sprintf(class_lookup, "Session.Screen%d.Toolbar.autoHide", screen_number);
   if (config.getValue(name_lookup, class_lookup, b))
This page took 0.033852 seconds and 4 git commands to generate.