]> Dogcows Code - chaz/openbox/blobdiff - src/Toolbar.cc
Using some references instead of pointers for the menus.
[chaz/openbox] / src / Toolbar.cc
index 88cf1a029778b0e847ace6dff3a8d08c460497f3..3d2c4ae8f42e79d151c556c3c835160012b3d1b3 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,11 @@ 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++-1] = ' ';   // add a space to the string for padding
+      t[len] = '\0';
 
       if (i18n->multibyte()) {
         XRectangle ink, logical;
@@ -277,9 +280,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 +291,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;
       }
@@ -1137,13 +1140,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 +1155,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 +1174,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 +1205,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 +1217,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 +1247,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.024448 seconds and 4 git commands to generate.