]> Dogcows Code - chaz/openbox/blobdiff - src/Toolbar.cc
only add one extra space to pad the clock in the toolbar
[chaz/openbox] / src / Toolbar.cc
index d2e39c85a50b0cde76bc7ad31e45ea3fc0c39241..790deb6f3894c41e498233b344f74fb9b08936fb 100644 (file)
@@ -69,14 +69,14 @@ Toolbar::Toolbar(BScreen *scrn) {
   openbox = screen->getOpenbox();
 
   // get the clock updating every minute
-  clock_timer = new BTimer(openbox, this);
+  clock_timer = new BTimer(*openbox, *this);
   timeval now;
   gettimeofday(&now, 0);
   clock_timer->setTimeout((60 - (now.tv_sec % 60)) * 1000);
   clock_timer->start();
 
   hide_handler.toolbar = this;
-  hide_timer = new BTimer(openbox, &hide_handler);
+  hide_timer = new BTimer(*openbox, hide_handler);
   hide_timer->setTimeout(openbox->getAutoRaiseDelay());
   hide_timer->fireOnce(True);
 
@@ -90,7 +90,7 @@ Toolbar::Toolbar(BScreen *scrn) {
   new_name_pos = 0;
   frame.grab_x = frame.grab_y = 0;
 
-  toolbarmenu = new Toolbarmenu(this);
+  toolbarmenu = new Toolbarmenu(*this);
 
   display = openbox->getXDisplay();
   XSetWindowAttributes attrib;
@@ -267,8 +267,10 @@ void Toolbar::reconfigure(void) {
   if (ttmp != -1) {
     tt = localtime(&ttmp);
     if (tt) {
-      char t[1024], *time_string = (char *) 0;
+      char t[1025], *time_string = (char *) 0;
       int len = strftime(t, 1024, screen->getStrftimeFormat(), tt);
+      t[len++-1] = ' ';   // add a space to the string for padding
+      t[len] = '\0';
 
       if (i18n->multibyte()) {
         XRectangle ink, logical;
@@ -277,9 +279,9 @@ void Toolbar::reconfigure(void) {
         frame.clock_w = logical.width;
 
         // ben's additional solution to pad some space beside the numbers
-        frame.clock_w +=
-          screen->getToolbarStyle()->fontset_extents->max_logical_extent.width *
-          4;
+        //frame.clock_w +=
+        //  screen->getToolbarStyle()->fontset_extents->max_logical_extent.width *
+        //  4;
 
         // brad's solution, which is currently buggy, too big
         //frame.clock_w =
@@ -288,7 +290,7 @@ void Toolbar::reconfigure(void) {
       } else {
         frame.clock_w = XTextWidth(screen->getToolbarStyle()->font, t, len);
         // ben's additional solution to pad some space beside the numbers
-        frame.clock_w += screen->getToolbarStyle()->font->max_bounds.width * 4;
+        //frame.clock_w += screen->getToolbarStyle()->font->max_bounds.width * 4;
         // brad's solution again, too big
         //frame.clock_w = screen->getToolbarStyle()->font->max_bounds.width * len;
       }
@@ -314,7 +316,7 @@ void Toolbar::reconfigure(void) {
   unsigned int w = 0;
   frame.workspace_label_w = 0;
 
-  for (i = 0; i < screen->getCount(); i++) {
+  for (i = 0; i < screen->getWorkspaceCount(); i++) {
     if (i18n->multibyte()) {
       XRectangle ink, logical;
       XmbTextExtents(screen->getToolbarStyle()->fontset,
@@ -926,14 +928,14 @@ void Toolbar::buttonReleaseEvent(XButtonEvent *re) {
           screen->changeWorkspaceID(screen->getCurrentWorkspace()->
                                     getWorkspaceID() - 1);
         else
-          screen->changeWorkspaceID(screen->getCount() - 1);
+          screen->changeWorkspaceID(screen->getWorkspaceCount() - 1);
     } else if (re->window == frame.nsbutton) {
       redrawNextWorkspaceButton(False, True);
 
       if (re->x >= 0 && re->x < (signed) frame.button_w &&
           re->y >= 0 && re->y < (signed) frame.button_w)
         if (screen->getCurrentWorkspace()->getWorkspaceID() <
-            screen->getCount() - 1)
+            screen->getWorkspaceCount() - 1)
           screen->changeWorkspaceID(screen->getCurrentWorkspace()->
                                     getWorkspaceID() + 1);
         else
@@ -1137,13 +1139,11 @@ void Toolbar::HideHandler::timeout(void) {
 }
 
 
-Toolbarmenu::Toolbarmenu(Toolbar *tb) : Basemenu(tb->screen) {
-  toolbar = tb;
-
+Toolbarmenu::Toolbarmenu(Toolbar &tb) : Basemenu(*tb.screen), toolbar(tb) {
   setLabel(i18n->getMessage(ToolbarSet, ToolbarToolbarTitle, "Toolbar"));
   setInternalMenu();
 
-  placementmenu = new Placementmenu(this);
+  placementmenu = new Placementmenu(*this);
 
   insert(i18n->getMessage(CommonSet, CommonPlacementTitle, "Placement"),
         placementmenu);
@@ -1154,8 +1154,8 @@ Toolbarmenu::Toolbarmenu(Toolbar *tb) : Basemenu(tb->screen) {
 
   update();
 
-  if (toolbar->isOnTop()) setItemSelected(1, True);
-  if (toolbar->doAutoHide()) setItemSelected(2, True);
+  if (toolbar.isOnTop()) setItemSelected(1, True);
+  if (toolbar.doAutoHide()) setItemSelected(2, True);
 }
 
 
@@ -1173,27 +1173,27 @@ void Toolbarmenu::itemSelected(int button, int index) {
 
   switch (item->function()) {
   case 1: { // always on top
-    Bool change = ((toolbar->isOnTop()) ? False : True);
-    toolbar->on_top = change;
+    Bool change = ((toolbar.isOnTop()) ? False : True);
+    toolbar.on_top = change;
     setItemSelected(1, change);
 
-    if (toolbar->isOnTop()) toolbar->screen->raiseWindows((Window *) 0, 0);
+    if (toolbar.isOnTop()) toolbar.screen->raiseWindows((Window *) 0, 0);
     break;
   }
 
   case 2: { // auto hide
-    Bool change = ((toolbar->doAutoHide()) ?  False : True);
-    toolbar->do_auto_hide = change;
+    Bool change = ((toolbar.doAutoHide()) ?  False : True);
+    toolbar.do_auto_hide = change;
     setItemSelected(2, change);
 
 #ifdef    SLIT
-    toolbar->screen->getSlit()->reposition();
+    toolbar.screen->getSlit()->reposition();
 #endif // SLIT
     break;
   }
 
   case 3: { // edit current workspace name
-    toolbar->edit();
+    toolbar.edit();
     hide();
 
     break;
@@ -1204,8 +1204,8 @@ void Toolbarmenu::itemSelected(int button, int index) {
 
 void Toolbarmenu::internal_hide(void) {
   Basemenu::internal_hide();
-  if (toolbar->doAutoHide() && ! toolbar->isEditing())
-    toolbar->hide_handler.timeout();
+  if (toolbar.doAutoHide() && ! toolbar.isEditing())
+    toolbar.hide_handler.timeout();
 }
 
 
@@ -1216,10 +1216,8 @@ void Toolbarmenu::reconfigure(void) {
 }
 
 
-Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu *tm)
-  : Basemenu(tm->toolbar->screen) {
-  toolbarmenu = tm;
-
+Toolbarmenu::Placementmenu::Placementmenu(Toolbarmenu &tm)
+  : Basemenu(*tm.toolbar.screen), toolbarmenu(tm) {
   setLabel(i18n->getMessage(ToolbarSet, ToolbarToolbarPlacement,
                            "Toolbar Placement"));
   setInternalMenu();
@@ -1248,13 +1246,13 @@ void Toolbarmenu::Placementmenu::itemSelected(int button, int index) {
   BasemenuItem *item = find(index);
   if (! item) return;
 
-  toolbarmenu->toolbar->screen->saveToolbarPlacement(item->function());
+  toolbarmenu.toolbar.screen->saveToolbarPlacement(item->function());
   hide();
-  toolbarmenu->toolbar->reconfigure();
+  toolbarmenu.toolbar.reconfigure();
 
 #ifdef    SLIT
   // reposition the slit as well to make sure it doesn't intersect the
   // toolbar
-  toolbarmenu->toolbar->screen->getSlit()->reposition();
+  toolbarmenu.toolbar.screen->getSlit()->reposition();
 #endif // SLIT
 }
This page took 0.026461 seconds and 4 git commands to generate.