From 89fddca1d7a2809278f9307367e7f6b600456dc1 Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Tue, 15 Apr 2003 12:22:52 +0000
Subject: cleaning

---
 src/Gnome.cc     |   7 ++--
 src/Screen.cc    |  21 ++++++----
 src/Window.cc    | 108 +++++++++++++++++++++++++++------------------------
 src/Workspace.cc |  11 ++----
 src/fluxbox.cc   | 116 ++++++++++++++++++++++++++++---------------------------
 src/fluxbox.hh   |  47 +++++++++++-----------
 6 files changed, 160 insertions(+), 150 deletions(-)

diff --git a/src/Gnome.cc b/src/Gnome.cc
index 717cc60..d4822c5 100644
--- a/src/Gnome.cc
+++ b/src/Gnome.cc
@@ -19,7 +19,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Gnome.cc,v 1.16 2003/04/15 00:17:59 fluxgen Exp $
+// $Id: Gnome.cc,v 1.17 2003/04/15 12:22:52 fluxgen Exp $
 
 #include "Gnome.hh"
 
@@ -126,6 +126,7 @@ void Gnome::setupWindow(FluxboxWindow &win) {
 void Gnome::updateClientList(BScreen &screen) {
     size_t num=0;
 
+    // count window clients in each workspace
     BScreen::Workspaces::const_iterator workspace_it = 
         screen.getWorkspacesList().begin();
     BScreen::Workspaces::const_iterator workspace_it_end = 
@@ -138,14 +139,14 @@ void Gnome::updateClientList(BScreen &screen) {
         for (; win_it != win_it_end; ++win_it)
             num += (*win_it)->numClients();
     }
-    //int num = getCurrentWorkspace()->getWindowList().size();
 	
     Window *wl = new (nothrow) Window[num];
     if (wl == 0) {
         cerr<<"Fatal: Out of memory, can't allocate for gnome client list"<<endl;
         return;
     }
-    //start the iterator from begining
+
+    //add client windows to buffer
     workspace_it = screen.getWorkspacesList().begin();
     int win=0;
     for (; workspace_it != workspace_it_end; ++workspace_it) {
diff --git a/src/Screen.cc b/src/Screen.cc
index 0d374ef..37efadd 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -22,7 +22,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Screen.cc,v 1.120 2003/04/15 00:50:24 rathnor Exp $
+// $Id: Screen.cc,v 1.121 2003/04/15 12:14:53 fluxgen Exp $
 
 
 #include "Screen.hh"
@@ -377,7 +377,8 @@ BScreen::ScreenResource::ScreenResource(ResourceManager &rm,
     opaque_move(rm, false, "session.opaqueMove", "Session.OpaqueMove"),
     full_max(rm, true, scrname+".fullMaximization", altscrname+".FullMaximization"),
     max_over_slit(rm, true, scrname+".maxOverSlit",altscrname+".MaxOverSlit"),
-    sloppy_window_grouping(rm, true, scrname+".sloppywindowgrouping", altscrname+".SloppyWindowGrouping"),
+    sloppy_window_grouping(rm, true, 
+                           scrname+".sloppywindowgrouping", altscrname+".SloppyWindowGrouping"),
     workspace_warping(rm, true, scrname+".workspacewarping", altscrname+".WorkspaceWarping"),
     desktop_wheeling(rm, true, scrname+".desktopwheeling", altscrname+".DesktopWheeling"),
     show_window_pos(rm, true, scrname+".showwindowposition", altscrname+".ShowWindowPosition"),
@@ -388,13 +389,17 @@ BScreen::ScreenResource::ScreenResource(ResourceManager &rm,
     rootcommand(rm, "", scrname+".rootCommand", altscrname+".RootCommand"),
     focus_model(rm, Fluxbox::CLICKTOFOCUS, scrname+".focusModel", altscrname+".FocusModel"),
     workspaces(rm, 1, scrname+".workspaces", altscrname+".Workspaces"),
-    toolbar_width_percent(rm, 65, scrname+".toolbar.widthPercent", altscrname+".Toolbar.WidthPercent"),
+    toolbar_width_percent(rm, 65, 
+                          scrname+".toolbar.widthPercent", altscrname+".Toolbar.WidthPercent"),
     edge_snap_threshold(rm, 0, scrname+".edgeSnapThreshold", altscrname+".EdgeSnapThreshold"),
-    slit_layernum(rm, Fluxbox::instance()->getDockLayer(), scrname+".slit.layer", altscrname+".Slit.Layer"),
-    toolbar_layernum(rm, Fluxbox::instance()->getDesktopLayer(), scrname+".toolbar.layer", altscrname+".Toolbar.Layer"),
+    slit_layernum(rm, Fluxbox::Layer(Fluxbox::instance()->getDockLayer()), 
+                  scrname+".slit.layer", altscrname+".Slit.Layer"),
+    toolbar_layernum(rm, Fluxbox::Layer(Fluxbox::instance()->getDesktopLayer()), 
+                     scrname+".toolbar.layer", altscrname+".Toolbar.Layer"),
     toolbar_mode(rm, ToolbarHandler::ICONS, scrname+".toolbar.mode", altscrname+".Toolbar.Mode"),
     toolbar_on_head(rm, 0, scrname+".toolbar.onhead", altscrname+".Toolbar.onHead"),
-    toolbar_placement(rm, Toolbar::BOTTOMCENTER, scrname+".toolbar.placement", altscrname+".Toolbar.Placement")
+    toolbar_placement(rm, Toolbar::BOTTOMCENTER, 
+                      scrname+".toolbar.placement", altscrname+".Toolbar.Placement")
 {
 
 };
@@ -460,7 +465,7 @@ BScreen::BScreen(ResourceManager &rm,
     image_control->installRootColormap();
     root_colormap_installed = true;
 
-    fluxbox->load_rc(this);
+    fluxbox->load_rc(*this);
 
     image_control->setDither(*resource.image_dither);
     theme = new Theme(disp, getRootWindow(), colormap(), getScreenNumber(), 
@@ -698,7 +703,7 @@ void BScreen::reconfigure() {
 #ifdef DEBUG
     cerr<<__FILE__<<"("<<__LINE__<<"): BScreen::reconfigure"<<endl;
 #endif // DEBUG
-    Fluxbox::instance()->loadRootCommand(this);
+    Fluxbox::instance()->loadRootCommand(*this);
     theme->setRootCommand(getRootCommand());
     const string &filename = Fluxbox::instance()->getStyleFilename();
     theme->load(filename.c_str()); // old theme engine
diff --git a/src/Window.cc b/src/Window.cc
index 4047f1b..9305fb6 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -22,7 +22,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Window.cc,v 1.132 2003/04/15 00:50:25 rathnor Exp $
+// $Id: Window.cc,v 1.133 2003/04/15 12:18:37 fluxgen Exp $
 
 #include "Window.hh"
 
@@ -34,9 +34,9 @@
 #include "Netizen.hh"
 #include "FbWinFrameTheme.hh"
 #include "MenuTheme.hh"
-
 #include "TextButton.hh"
 #include "EventManager.hh"
+#include "FbAtoms.hh"
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -279,11 +279,12 @@ void FluxboxWindow::init() {
     // we don't want to duplicate code here and in attachClient
     m_clientlist.push_back(m_client);
 #ifdef DEBUG
-    cerr<<"FluxboxWindow::init(this="<<this<<")"<<endl;
+    cerr<<__FILE__<<": FluxboxWindow::init(this="<<this<<", client="<<hex<<m_client->window()<<dec<<")"<<endl;
 #endif // DEBUG
     TextButton *btn =  new TextButton(m_frame.label(), 
                                       m_frame.theme().font(),
                                       m_client->title());
+    btn->setJustify(m_frame.theme().justify());
     m_labelbuttons[m_client] = btn;
     m_frame.addLabelButton(*btn);
     btn->show();
@@ -464,10 +465,6 @@ void FluxboxWindow::attachClient(WinClient &client) {
     if (client.m_win == this)
         return;
 
-#ifdef DEBUG
-    cerr<<__FILE__<<"("<<__FUNCTION__<<")["<<this<<"]"<<endl;
-    cerr<<"attach client window = "<<hex<<client.window()<<dec<<endl;
-#endif // DEBUG    
     // reparent client win to this frame 
     m_frame.setClientWindow(client);
 
@@ -483,26 +480,31 @@ void FluxboxWindow::attachClient(WinClient &client) {
             // reparent window to this
             m_frame.setClientWindow(*(*client_it));           
             (*client_it)->m_win = this;
-            // create a labelbutton for this client and associate it with the pointer
+            // create a labelbutton for this client and 
+            // associate it with the pointer
             TextButton *btn = new TextButton(m_frame.label(), 
                                              m_frame.theme().font(),
                                              (*client_it)->title());
+            btn->setJustify(m_frame.theme().justify());
             m_labelbuttons[(*client_it)] = btn;
             m_frame.addLabelButton(*btn);
             btn->show();
             FbTk::EventManager &evm = *FbTk::EventManager::instance();
             // we need motion notify so we mask it
-            btn->window().setEventMask(ExposureMask | ButtonPressMask | ButtonReleaseMask | 
-                                       ButtonMotionMask);
+            btn->window().setEventMask(ExposureMask | ButtonPressMask | 
+                                       ButtonReleaseMask | ButtonMotionMask);
 
 
-            FbTk::RefCount<FbTk::Command> set_client_cmd(new SetClientCmd(*(*client_it)));
+            FbTk::RefCount<FbTk::Command> 
+                set_client_cmd(new SetClientCmd(*(*client_it)));
             btn->setOnClick(set_client_cmd);
             evm.add(*this, btn->window()); // we take care of button events for this
 
             // update transients in client to have this as transient_for
-            WinClient::TransientList::iterator trans_it = (*client_it)->transientList().begin();
-            WinClient::TransientList::iterator trans_it_end = (*client_it)->transientList().end();
+            WinClient::TransientList::iterator trans_it = 
+                (*client_it)->transientList().begin();
+            WinClient::TransientList::iterator trans_it_end = 
+                (*client_it)->transientList().end();
             for (; trans_it != trans_it_end; ++trans_it) {
                 (*trans_it)->m_client->transient_for = this;
             }
@@ -525,8 +527,8 @@ void FluxboxWindow::attachClient(WinClient &client) {
         btn->show();
         FbTk::EventManager &evm = *FbTk::EventManager::instance();
         // we need motion notify so we mask it
-        btn->window().setEventMask(ExposureMask | ButtonPressMask | ButtonReleaseMask | 
-                                   ButtonMotionMask);
+        btn->window().setEventMask(ExposureMask | ButtonPressMask | 
+                                   ButtonReleaseMask | ButtonMotionMask);
 
 
         FbTk::RefCount<FbTk::Command> set_client_cmd(new SetClientCmd(client));
@@ -535,8 +537,10 @@ void FluxboxWindow::attachClient(WinClient &client) {
 
         client.m_win = this;    
         // update transients in client to have this as transient_for
-        WinClient::TransientList::iterator trans_it = client.transientList().begin();
-        WinClient::TransientList::iterator trans_it_end = client.transientList().end();
+        WinClient::TransientList::iterator trans_it = 
+            client.transientList().begin();
+        WinClient::TransientList::iterator trans_it_end = 
+            client.transientList().end();
         for (; trans_it != trans_it_end; ++trans_it) {
             (*trans_it)->m_client->transient_for = this;
         }
@@ -545,19 +549,11 @@ void FluxboxWindow::attachClient(WinClient &client) {
     }
 
     m_frame.reconfigure();
-#ifdef DEBUG
-    XSync(display, False); // so we see error/warnings in time
-    cerr<<"destroyed old window "<<client.window()<<endl;
-#endif // DEBUG
 
     // keep the current window on top
     m_client->raise();
 
-#ifdef DEBUG
-    XSync(display, False); // so we see error/warnings in time
-    cerr<<__FILE__<<"("<<__FUNCTION__<<") clientlist size: "<<m_clientlist.size()<<endl;
-    cerr<<endl<<endl<<endl;
-#endif // DEBUG
+
 
 }
 
@@ -567,12 +563,6 @@ bool FluxboxWindow::detachClient(WinClient &client) {
     if (client.m_win != this || numClients() <= 1)
         return false;
     
-#ifdef DEBUG
-    cerr<<__FILE__<<"("<<__FUNCTION__<<")["<<this<<"] client to detach: "<<
-        hex<<client.window()<<dec<<endl;
-    cerr<<__FILE__<<"("<<__FUNCTION__<<"): number of clients = "<<numClients()<<endl;
-#endif // DEBUG
-
     removeClient(client);
 
     client.m_win = screen.createWindow(client);
@@ -634,11 +624,15 @@ WinClient *FluxboxWindow::findClient(Window win) {
 
 /// raise and focus next client
 void FluxboxWindow::nextClient() {
-    if (numClients() == 1)
+    if (numClients() <= 1)
         return;
 
     ClientList::iterator it = find(m_clientlist.begin(), m_clientlist.end(), m_client);
-    assert(it != m_clientlist.end());
+    if (it == m_clientlist.end()) {
+        m_client = m_clientlist.front();
+        return;
+    }
+
     it++;
     if (it == m_clientlist.end())
         m_client = m_clientlist.front();
@@ -649,12 +643,14 @@ void FluxboxWindow::nextClient() {
 }
 
 void FluxboxWindow::prevClient() {
-    if (numClients() == 1)
+    if (numClients() <= 1)
         return;
 
     ClientList::iterator it = find(m_clientlist.begin(), m_clientlist.end(), m_client);
-    assert(it != m_clientlist.end());
-
+    if (it == m_clientlist.end()) {
+        m_client = m_clientlist.front();
+        return;
+    }
     if (it == m_clientlist.begin())
         m_client = m_clientlist.back();
     else
@@ -909,11 +905,11 @@ void FluxboxWindow::getMWMHints() {
     int format;
     Atom atom_return;
     unsigned long num, len;
-    Fluxbox *fluxbox = Fluxbox::instance();
+    Atom  motif_wm_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False);
     if (!XGetWindowProperty(display, m_client->window(),
-                            fluxbox->getMotifWMHintsAtom(), 0,
+                            motif_wm_hints, 0,
                             PropMwmHintsElements, false,
-                            fluxbox->getMotifWMHintsAtom(), &atom_return,
+                            motif_wm_hints, &atom_return,
                             &format, &num, &len,
                             (unsigned char **) &m_client->mwm_hint) == Success &&
         m_client->mwm_hint) {
@@ -1550,7 +1546,7 @@ void FluxboxWindow::installColormap(bool install) {
     Colormap *cmaps = XListInstalledColormaps(display, m_client->window(), &ncmap);
     XWindowAttributes wattrib;
     if (cmaps) { //!!
-        if (m_client->getAttrib(wattrib)) { //XGetWindowAttributes(display, m_client->window, &wattrib)) {
+        if (m_client->getAttrib(wattrib)) {
             if (install) {
                 // install the window's colormap
                 for (i = 0; i < ncmap; i++) {
@@ -1613,9 +1609,8 @@ bool FluxboxWindow::getState() {
     bool ret = false;
     int foo;
     unsigned long *state, ulfoo, nitems;
-    Fluxbox *fluxbox = Fluxbox::instance();
-    if ((XGetWindowProperty(display, m_client->window(), fluxbox->getWMStateAtom(),
-                            0l, 2l, false, fluxbox->getWMStateAtom(),
+    if ((XGetWindowProperty(display, m_client->window(), FbAtoms::instance()->getWMStateAtom(),
+                            0l, 2l, false, FbAtoms::instance()->getWMStateAtom(),
                             &atom_return, &foo, &nitems, &ulfoo,
                             (unsigned char **) &state) != Success) ||
         (! state)) {
@@ -1713,13 +1708,13 @@ void FluxboxWindow::restoreAttributes() {
     Atom atom_return;
     int foo;
     unsigned long ulfoo, nitems;
-    Fluxbox *fluxbox = Fluxbox::instance();
+    FbAtoms *fbatoms = FbAtoms::instance();
 	
     BaseDisplay::BlackboxAttributes *net;
     if (XGetWindowProperty(display, m_client->window(),
-                           fluxbox->getFluxboxAttributesAtom(), 0l,
+                           fbatoms->getFluxboxAttributesAtom(), 0l,
                            PropBlackboxAttributesElements, false,
-                           fluxbox->getFluxboxAttributesAtom(), &atom_return, &foo,
+                           fbatoms->getFluxboxAttributesAtom(), &atom_return, &foo,
                            &nitems, &ulfoo, (unsigned char **) &net) ==
         Success && net && nitems == PropBlackboxAttributesElements) {
         blackbox_attrib.flags = net->flags;
@@ -1949,7 +1944,11 @@ void FluxboxWindow::mapRequestEvent(XMapRequestEvent &re) {
 
 
 void FluxboxWindow::mapNotifyEvent(XMapEvent &ne) {
-    if (ne.window == m_client->window() && !ne.override_redirect && visible) {
+    WinClient *client = findClient(ne.window);
+    if (client == 0)
+        return;
+
+    if (!ne.override_redirect && visible) {
         Fluxbox *fluxbox = Fluxbox::instance();
         fluxbox->grab();
         if (! validateClient())
@@ -1990,6 +1989,7 @@ void FluxboxWindow::unmapNotifyEvent(XUnmapEvent &ue) {
 	
 #ifdef DEBUG
     cerr<<__FILE__<<"("<<__FUNCTION__<<"): 0x"<<hex<<client->window()<<dec<<endl;
+    cerr<<__FILE__<<"("<<__FUNCTION__<<"): title="<<client->title()<<endl;
 #endif // DEBUG
     
     restore(client, false);
@@ -2107,7 +2107,8 @@ void FluxboxWindow::exposeEvent(XExposeEvent &ee) {
 
 
 void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) {
-    if (cr.window != m_client->window())
+    WinClient *client = findClient(cr.window);
+    if (client == 0)
         return;
 
     int cx = m_frame.x(), cy = m_frame.y();
@@ -2116,7 +2117,7 @@ void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) {
                                m_frame.titlebar().height() + frame().titlebar().borderWidth() 
                                : 0);
     if (cr.value_mask & CWBorderWidth)
-        m_client->old_bw = cr.border_width;
+        client->old_bw = cr.border_width;
 
     if (cr.value_mask & CWX)
         cx = cr.x;
@@ -2638,8 +2639,13 @@ void FluxboxWindow::restore(WinClient *client, bool remap) {
 
     delete client;
 
-    if (numClients() == 0)
+#ifdef DEBUG
+        cerr<<__FILE__<<"("<<__FUNCTION__<<"): numClients() = "<<numClients()<<endl;
+#endif // DEBUG
+    if (numClients() == 0) {
+
         m_frame.hide();
+    }
 
 }
 
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 2d95c77..2bc0d78 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -22,7 +22,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: Workspace.cc,v 1.51 2003/04/14 14:59:15 fluxgen Exp $
+// $Id: Workspace.cc,v 1.52 2003/04/15 12:20:27 fluxgen Exp $
 
 #include "Workspace.hh"
 
@@ -496,15 +496,10 @@ void Workspace::updateClientmenu() {
             (*win_it)->clientList().begin();
         FluxboxWindow::ClientList::iterator client_it_end = 
             (*win_it)->clientList().end();
-        for (; client_it != client_it_end; ++client_it) {
-            /*  FbTk::RefCount<FbTk::Command> 
-                raise_and_focus(new RaiseFocusAndSetWorkspace(*this, 
-                                                              *(*client_it)));
-                                                              */
+        for (; client_it != client_it_end; ++client_it)
             m_clientmenu.insert(new ClientMenuItem(*(*client_it), *this));
-        }
     }
-    
+
     m_clientmenu.update();
 }
 
diff --git a/src/fluxbox.cc b/src/fluxbox.cc
index 11dc5a5..9939c90 100644
--- a/src/fluxbox.cc
+++ b/src/fluxbox.cc
@@ -22,7 +22,7 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: fluxbox.cc,v 1.108 2003/04/15 08:54:40 fluxgen Exp $
+// $Id: fluxbox.cc,v 1.109 2003/04/15 12:11:54 fluxgen Exp $
 
 #include "fluxbox.hh"
 
@@ -39,6 +39,8 @@
 #include "EventManager.hh"
 #include "FbCommands.hh"
 #include "WinClient.hh"
+#include "Keys.hh"
+#include "FbAtoms.hh"
 
 //Use GNU extensions
 #ifndef	 _GNU_SOURCE
@@ -356,7 +358,8 @@ Fluxbox::Titlebar Fluxbox::m_titlebar_left[] = {STICK};
 Fluxbox::Titlebar Fluxbox::m_titlebar_right[] = {MINIMIZE, MAXIMIZE, CLOSE};
 
 Fluxbox::Fluxbox(int m_argc, char **m_argv, const char *dpy_name, const char *rc)
-    : BaseDisplay(m_argv[0], dpy_name), FbAtoms(getXDisplay()),
+    : BaseDisplay(m_argv[0], dpy_name),
+      m_fbatoms(new FbAtoms()),
       m_resourcemanager(), m_screen_rm(),
       m_rc_tabs(m_resourcemanager, true, "session.tabs", "Session.Tabs"),
       m_rc_iconbar(m_resourcemanager, true, "session.iconbar", "Session.Iconbar"),
@@ -970,7 +973,7 @@ void Fluxbox::handleClientMessage(XClientMessageEvent &ce) {
     if (ce.format != 32)
         return;
 	
-    if (ce.message_type == getWMChangeStateAtom()) {
+    if (ce.message_type == m_fbatoms->getWMChangeStateAtom()) {
         FluxboxWindow *win = searchWindow(ce.window);
         if (! win || ! win->validateClient())
             return;
@@ -979,18 +982,18 @@ void Fluxbox::handleClientMessage(XClientMessageEvent &ce) {
             win->iconify();
         if (ce.data.l[0] == NormalState)
             win->deiconify();
-    } else if (ce.message_type == getFluxboxChangeWorkspaceAtom()) {
+    } else if (ce.message_type == m_fbatoms->getFluxboxChangeWorkspaceAtom()) {
         BScreen *screen = searchScreen(ce.window);
 
         if (screen && ce.data.l[0] >= 0 &&
             ce.data.l[0] < (signed)screen->getCount())
             screen->changeWorkspaceID(ce.data.l[0]);
 				
-    } else if (ce.message_type == getFluxboxChangeWindowFocusAtom()) {
+    } else if (ce.message_type == m_fbatoms->getFluxboxChangeWindowFocusAtom()) {
         FluxboxWindow *win = searchWindow(ce.window);
         if (win && win->isVisible() && win->setInputFocus())
             win->installColormap(True);
-    } else if (ce.message_type == getFluxboxCycleWindowFocusAtom()) {
+    } else if (ce.message_type == m_fbatoms->getFluxboxCycleWindowFocusAtom()) {
         BScreen *screen = searchScreen(ce.window);
 
         if (screen) {
@@ -999,7 +1002,7 @@ void Fluxbox::handleClientMessage(XClientMessageEvent &ce) {
             else
                 screen->nextFocus();
         }		
-    } else if (ce.message_type == getFluxboxChangeAttributesAtom()) {
+    } else if (ce.message_type == m_fbatoms->getFluxboxChangeAttributesAtom()) {
 		
         FluxboxWindow *win = searchWindow(ce.window);
 
@@ -1290,7 +1293,7 @@ void Fluxbox::handleKeyEvent(XKeyEvent &ke) {
 	
 	
 }
-void Fluxbox::doWindowAction(Keys::KeyAction action, const int param) {
+void Fluxbox::doWindowAction(int action, const int param) {
     if (!focused_window)
         return;
 
@@ -1913,7 +1916,7 @@ void Fluxbox::load_rc() {
     }
 }
 
-void Fluxbox::load_rc(BScreen *screen) {
+void Fluxbox::load_rc(BScreen &screen) {
     //get resource filename
     string dbfile(getRcFilename());
     if (dbfile.size() != 0) {
@@ -1936,50 +1939,51 @@ void Fluxbox::load_rc(BScreen *screen) {
 		
     XrmValue value;
     char *value_type, name_lookup[1024], class_lookup[1024];
-    int screen_number = screen->getScreenNumber();
+    int screen_number = screen.getScreenNumber();
 
     sprintf(name_lookup, "session.screen%d.rowPlacementDirection", screen_number);
     sprintf(class_lookup, "Session.Screen%d.RowPlacementDirection", screen_number);
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "righttoleft", value.size))
-            screen->saveRowPlacementDirection(BScreen::RIGHTLEFT);
+            screen.saveRowPlacementDirection(BScreen::RIGHTLEFT);
         else	
-            screen->saveRowPlacementDirection(BScreen::LEFTRIGHT);
+            screen.saveRowPlacementDirection(BScreen::LEFTRIGHT);
     } else
-        screen->saveRowPlacementDirection(BScreen::LEFTRIGHT);
+        screen.saveRowPlacementDirection(BScreen::LEFTRIGHT);
 
     sprintf(name_lookup, "session.screen%d.colPlacementDirection", screen_number);
     sprintf(class_lookup, "Session.Screen%d.ColPlacementDirection", screen_number);
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "bottomtotop", value.size))
-            screen->saveColPlacementDirection(BScreen::BOTTOMTOP);
+            screen.saveColPlacementDirection(BScreen::BOTTOMTOP);
         else
-            screen->saveColPlacementDirection(BScreen::TOPBOTTOM);
+            screen.saveColPlacementDirection(BScreen::TOPBOTTOM);
     } else
-        screen->saveColPlacementDirection(BScreen::TOPBOTTOM);
+        screen.saveColPlacementDirection(BScreen::TOPBOTTOM);
 
-    screen->removeWorkspaceNames();
+    screen.removeWorkspaceNames();
 
     sprintf(name_lookup, "session.screen%d.workspaceNames", screen_number);
     sprintf(class_lookup, "Session.Screen%d.WorkspaceNames", screen_number);
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
 #ifdef DEBUG
-        cerr<<__FILE__<<"("<<__LINE__<<"): Workspaces="<<screen->getNumberOfWorkspaces()<<endl;
+        cerr<<__FILE__<<"("<<__FUNCTION__<<"): Workspaces="<<
+            screen.getNumberOfWorkspaces()<<endl;
 #endif // DEBUG
         char *search = StringUtil::strdup(value.addr);
 
         int i;
-        for (i = 0; i < screen->getNumberOfWorkspaces(); i++) {
+        for (i = 0; i < screen.getNumberOfWorkspaces(); i++) {
             char *nn;
 
             if (! i) nn = strtok(search, ",");
             else nn = strtok(0, ",");
 
             if (nn)
-                screen->addWorkspaceName(nn);	
+                screen.addWorkspaceName(nn);	
             else break;
 			
         }
@@ -1992,13 +1996,13 @@ void Fluxbox::load_rc(BScreen *screen) {
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "RowSmartPlacement", value.size))
-            screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
+            screen.savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
         else if (! strncasecmp(value.addr, "ColSmartPlacement", value.size))
-            screen->savePlacementPolicy(BScreen::COLSMARTPLACEMENT);
+            screen.savePlacementPolicy(BScreen::COLSMARTPLACEMENT);
         else
-            screen->savePlacementPolicy(BScreen::CASCADEPLACEMENT);
+            screen.savePlacementPolicy(BScreen::CASCADEPLACEMENT);
     } else
-        screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
+        screen.savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
     
 #ifdef SLIT
     sprintf(name_lookup, "session.screen%d.slit.placement", screen_number);
@@ -2006,34 +2010,34 @@ void Fluxbox::load_rc(BScreen *screen) {
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "TopLeft", value.size))
-            screen->saveSlitPlacement(Slit::TOPLEFT);
+            screen.saveSlitPlacement(Slit::TOPLEFT);
         else if (! strncasecmp(value.addr, "CenterLeft", value.size))
-            screen->saveSlitPlacement(Slit::CENTERLEFT);
+            screen.saveSlitPlacement(Slit::CENTERLEFT);
         else if (! strncasecmp(value.addr, "BottomLeft", value.size))
-            screen->saveSlitPlacement(Slit::BOTTOMLEFT);
+            screen.saveSlitPlacement(Slit::BOTTOMLEFT);
         else if (! strncasecmp(value.addr, "TopCenter", value.size))
-            screen->saveSlitPlacement(Slit::TOPCENTER);
+            screen.saveSlitPlacement(Slit::TOPCENTER);
         else if (! strncasecmp(value.addr, "BottomCenter", value.size))
-            screen->saveSlitPlacement(Slit::BOTTOMCENTER);
+            screen.saveSlitPlacement(Slit::BOTTOMCENTER);
         else if (! strncasecmp(value.addr, "TopRight", value.size))
-            screen->saveSlitPlacement(Slit::TOPRIGHT);
+            screen.saveSlitPlacement(Slit::TOPRIGHT);
         else if (! strncasecmp(value.addr, "BottomRight", value.size))
-            screen->saveSlitPlacement(Slit::BOTTOMRIGHT);
+            screen.saveSlitPlacement(Slit::BOTTOMRIGHT);
         else
-            screen->saveSlitPlacement(Slit::CENTERRIGHT);
+            screen.saveSlitPlacement(Slit::CENTERRIGHT);
     } else
-        screen->saveSlitPlacement(Slit::CENTERRIGHT);
+        screen.saveSlitPlacement(Slit::CENTERRIGHT);
 
     sprintf(name_lookup, "session.screen%d.slit.direction", screen_number);
     sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number);
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "Horizontal", value.size))
-            screen->saveSlitDirection(Slit::HORIZONTAL);
+            screen.saveSlitDirection(Slit::HORIZONTAL);
         else
-            screen->saveSlitDirection(Slit::VERTICAL);
+            screen.saveSlitDirection(Slit::VERTICAL);
     } else
-        screen->saveSlitDirection(Slit::VERTICAL);
+        screen.saveSlitDirection(Slit::VERTICAL);
 
 
     sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number);
@@ -2041,11 +2045,11 @@ void Fluxbox::load_rc(BScreen *screen) {
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (! strncasecmp(value.addr, "True", value.size))
-            screen->saveSlitAutoHide(True);
+            screen.saveSlitAutoHide(true);
         else
-            screen->saveSlitAutoHide(False);
+            screen.saveSlitAutoHide(false);
     } else
-        screen->saveSlitAutoHide(False);
+        screen.saveSlitAutoHide(false);
     /*
       #ifdef XINERAMA
       int tmp_head;
@@ -2067,9 +2071,9 @@ void Fluxbox::load_rc(BScreen *screen) {
     sprintf(class_lookup, "Session.Screen%d.StrftimeFormat", screen_number);
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value))
-        screen->saveStrftimeFormat(value.addr);
+        screen.saveStrftimeFormat(value.addr);
     else
-        screen->saveStrftimeFormat("%I:%M %p");
+        screen.saveStrftimeFormat("%I:%M %p");
 #else //	HAVE_STRFTIME
 
     sprintf(name_lookup, "session.screen%d.dateFormat", screen_number);
@@ -2077,11 +2081,11 @@ void Fluxbox::load_rc(BScreen *screen) {
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {
         if (strncasecmp(value.addr, "european", value.size))
-            screen->saveDateFormat(B_AMERICANDATE);
+            screen.saveDateFormat(B_AMERICANDATE);
         else
-            screen->saveDateFormat(B_EUROPEANDATE);
+            screen.saveDateFormat(B_EUROPEANDATE);
     } else
-        screen->saveDateFormat(B_AMERICANDATE);
+        screen.saveDateFormat(B_AMERICANDATE);
 
     sprintf(name_lookup, "session.screen%d.clockFormat", screen_number);
     sprintf(class_lookup, "Session.Screen%d.ClockFormat", screen_number);
@@ -2089,23 +2093,23 @@ void Fluxbox::load_rc(BScreen *screen) {
                        &value)) {
         int clock;
         if (sscanf(value.addr, "%d", &clock) != 1)
-            screen->saveClock24Hour(False);
+            screen.saveClock24Hour(False);
         else if (clock == 24) 
-            screen->saveClock24Hour(True);
+            screen.saveClock24Hour(True);
         else 
-            screen->saveClock24Hour(False);
+            screen.saveClock24Hour(False);
     } else
-        screen->saveClock24Hour(False);
+        screen.saveClock24Hour(False);
 #endif // HAVE_STRFTIME
 
     //check size on toolbarwidth percent	
-    if (screen->getToolbarWidthPercent() <= 0 || 
-        screen->getToolbarWidthPercent() > 100)
-        screen->saveToolbarWidthPercent(66);
+    if (screen.getToolbarWidthPercent() <= 0 || 
+        screen.getToolbarWidthPercent() > 100)
+        screen.saveToolbarWidthPercent(66);
 
 }
 
-void Fluxbox::loadRootCommand(BScreen *screen)	{
+void Fluxbox::loadRootCommand(BScreen &screen)	{
  
     string dbfile(getRcFilename());
 
@@ -2115,13 +2119,13 @@ void Fluxbox::loadRootCommand(BScreen *screen)	{
 
     XrmValue value;
     char *value_type, name_lookup[1024], class_lookup[1024];
-    sprintf(name_lookup, "session.screen%d.rootCommand", screen->getScreenNumber());
-    sprintf(class_lookup, "Session.Screen%d.RootCommand", screen->getScreenNumber());
+    sprintf(name_lookup, "session.screen%d.rootCommand", screen.getScreenNumber());
+    sprintf(class_lookup, "Session.Screen%d.RootCommand", screen.getScreenNumber());
     if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
                        &value)) {										 
-        screen->saveRootCommand(value.addr==0 ? "": value.addr);
+        screen.saveRootCommand(value.addr==0 ? "": value.addr);
     } else
-        screen->saveRootCommand("");		
+        screen.saveRootCommand("");		
 	
 }
 
diff --git a/src/fluxbox.hh b/src/fluxbox.hh
index c5db866..f7d2191 100644
--- a/src/fluxbox.hh
+++ b/src/fluxbox.hh
@@ -22,16 +22,14 @@
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
-// $Id: fluxbox.hh,v 1.48 2003/04/15 00:50:25 rathnor Exp $
+// $Id: fluxbox.hh,v 1.49 2003/04/15 12:11:10 fluxgen Exp $
 
 #ifndef	 FLUXBOX_HH
 #define	 FLUXBOX_HH
 
 #include "Resource.hh"
-#include "Keys.hh"
 #include "BaseDisplay.hh"
 #include "Timer.hh"
-#include "Toolbar.hh"
 #include "Observer.hh"
 
 #ifdef HAVE_CONFIG_H
@@ -39,7 +37,6 @@
 #endif // HAVE_CONFIG_H
 
 #include "SignalHandler.hh"
-#include "FbAtoms.hh"
 
 #include <X11/Xlib.h>
 #include <X11/Xresource.h>
@@ -65,6 +62,9 @@
 
 class AtomHandler;
 class FluxboxWindow;
+class Keys;
+class BScreen;
+class FbAtoms;
 
 /**
 	main class for the window manager.
@@ -72,7 +72,6 @@ class FluxboxWindow;
 */
 class Fluxbox : public BaseDisplay, public FbTk::TimeoutHandler, 
                 public FbTk::SignalEventHandler,
-                public FbAtoms,
                 public FbTk::Observer {
 public:
     Fluxbox(int argc, char **argv, const char * dpy_name= 0, const char *rc = 0);	
@@ -80,11 +79,10 @@ public:
 	
     static Fluxbox *instance() { return singleton; }
 	
-    inline bool useIconBar() { return *m_rc_iconbar; }
+    inline bool useIconBar() const { return *m_rc_iconbar; }
     inline void saveIconBar(bool value) { m_rc_iconbar = value; }
-#ifdef HAVE_GETPID
+
     inline Atom getFluxboxPidAtom() const { return fluxbox_pid; }
-#endif // HAVE_GETPID
 
     FluxboxWindow *searchGroup(Window, FluxboxWindow *);
     FluxboxWindow *searchWindow(Window);
@@ -101,8 +99,8 @@ public:
 
     enum FocusModel { SLOPPYFOCUS=0, SEMISLOPPYFOCUS, CLICKTOFOCUS };
 
-    inline const std::vector<Fluxbox::Titlebar>& getTitlebarRight() { return *m_rc_titlebar_right; }
-    inline const std::vector<Fluxbox::Titlebar>& getTitlebarLeft() { return *m_rc_titlebar_left; }
+    inline const std::vector<Fluxbox::Titlebar>& getTitlebarRight() const { return *m_rc_titlebar_right; }
+    inline const std::vector<Fluxbox::Titlebar>& getTitlebarLeft() const { return *m_rc_titlebar_left; }
     inline const std::string &getStyleFilename() const { return *m_rc_stylefile; }
 
     inline const char *getMenuFilename() const { return m_rc_menufile->c_str(); }
@@ -113,8 +111,8 @@ public:
     // class to store layer numbers (special Resource type)
     class Layer {
     public:
-        Layer(int i) : m_num(i) {};
-        const int getNum() const { return m_num; }
+        explicit Layer(int i) : m_num(i) {};
+        inline int getNum() const { return m_num; }
 
         Layer &operator=(int num) { m_num = num; return *this; }
         
@@ -139,25 +137,25 @@ public:
 
     inline void maskWindowEvents(Window w, FluxboxWindow *bw)
         { masked = w; masked_window = bw; }
-    inline void setNoFocus(Bool f) { no_focus = f; }
+    inline void setNoFocus(bool f) { no_focus = f; }
 
     void watchKeyRelease(BScreen *screen, unsigned int mods);
 
     void setFocusedWindow(FluxboxWindow *w);
     void shutdown();
-    void load_rc(BScreen *);
-    void loadRootCommand(BScreen *);
+    void load_rc(BScreen &scr);
+    void loadRootCommand(BScreen &scr);
     void loadTitlebar();
     void saveStyleFilename(const char *val) { m_rc_stylefile = (val == 0 ? "" : val); }
     void saveMenuFilename(const char *);
     void saveTitlebarFilename(const char *);
     void saveSlitlistFilename(const char *val) { m_rc_slitlistfile = (val == 0 ? "" : val); }
-    void saveWindowSearch(Window, FluxboxWindow *);
-    void saveGroupSearch(Window, FluxboxWindow *);	
+    void saveWindowSearch(Window win, FluxboxWindow *fbwin);
+    void saveGroupSearch(Window win, FluxboxWindow *fbwin);	
     void save_rc();
-    void removeWindowSearch(Window);
-    void removeGroupSearch(Window);
-    void restart(const char * = 0);
+    void removeWindowSearch(Window win);
+    void removeGroupSearch(Window win);
+    void restart(const char *command = 0);
     void reconfigure();
     void rereadMenu();
     void checkMenu();
@@ -211,8 +209,11 @@ private:
     void handleUnmapNotify(XUnmapEvent &ue);
     void handleClientMessage(XClientMessageEvent &ce);
     void handleKeyEvent(XKeyEvent &ke);	
-    void doWindowAction(Keys::KeyAction action, const int param);
+    void doWindowAction(int action, const int param);
+    void setTitlebar(std::vector<Fluxbox::Titlebar>& dir, const char *arg);
     
+    std::auto_ptr<FbAtoms> m_fbatoms;
+
     ResourceManager m_resourcemanager, m_screen_rm;
 	
     //--- Resources
@@ -226,7 +227,6 @@ private:
     Resource<TitlebarList> m_rc_titlebar_left, m_rc_titlebar_right;
     Resource<unsigned int> m_rc_cache_life, m_rc_cache_max;
 
-    void setTitlebar(std::vector<Fluxbox::Titlebar>& dir, const char *arg);
 	
     std::map<Window, FluxboxWindow *> windowSearch;
     std::map<Window, FluxboxWindow *> groupSearch;
@@ -241,9 +241,7 @@ private:
     BScreen *watching_screen;
     unsigned int watch_keyrelease;
 
-#ifdef HAVE_GETPID
     Atom fluxbox_pid;
-#endif // HAVE_GETPID
 
     bool no_focus, reconfigure_wait, reread_menu_wait;
     Time last_time;
@@ -258,6 +256,7 @@ private:
 	
     static Fluxbox *singleton;
     std::vector<AtomHandler *> m_atomhandler;
+
 };
 
 
-- 
cgit v0.11.2