]> Dogcows Code - chaz/openbox/commitdiff
couple of LinkedLists converted to STL lists in BScreen
authorDana Jansens <danakj@orodu.net>
Sun, 12 May 2002 01:23:48 +0000 (01:23 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 12 May 2002 01:23:48 +0000 (01:23 +0000)
changed teh calls to XSetInputFocus. Using the root window as the fallback when there is nothing to focus instead of the toolbar. Also, always using 'RevertToPointerRoot' instead of sometimes 'RevertToParent'

src/Configmenu.cc
src/Screen.cc
src/Screen.h
src/Toolbar.cc
src/Window.cc
src/Workspace.cc

index 0a219662a8936b1a1f919a93881ca62af1113c28..3282463ef334e761fdd2f35589b6dc9a3756b78c 100644 (file)
@@ -1,4 +1,5 @@
 // Configmenu.cc for Openbox
+// Copyright (c) 2002 - 2002 Ben Jansens <ben@orodu.net>
 // Copyright (c) 2001 Sean 'Shaleh' Perry <shaleh@debian.org>
 // Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net)
 //
@@ -184,32 +185,18 @@ void Configmenu::Focusmenu::itemSelected(int button, int index) {
   case 1: // click to focus
     configmenu->screen.setSloppyFocus(false);
     configmenu->screen.setAutoRaise(false);
-
-    if (! configmenu->screen.getOpenbox().focusedWindow())
-      XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(),
-                    configmenu->screen.getToolbar()->getWindowID(),
-                    RevertToParent, CurrentTime);
-    else
-      XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(),
-                    configmenu->screen.getOpenbox().
-                    focusedWindow()->getClientWindow(),
-                    RevertToParent, CurrentTime);
-
+    // make windows all grab button1 clicks
     configmenu->screen.reconfigure();
-
     break;
 
   case 2: // sloppy focus
     configmenu->screen.setSloppyFocus(true);
-
+    // make windows stop grabbing button1 clicks
     configmenu->screen.reconfigure();
-
     break;
 
   case 3: // auto raise with sloppy focus
-    bool change = ((configmenu->screen.autoRaise()) ? false : true);
-    configmenu->screen.setAutoRaise(change);
-
+    configmenu->screen.setAutoRaise(!configmenu->screen.autoRaise());
     break;
   }
 
index f3ff579e67c4b05c5edc12ac0c84c5d8eeb8a49b..29a7a69d5f95309793913084a9de53b85a38078c 100644 (file)
@@ -236,8 +236,6 @@ BScreen::BScreen(Openbox &ob, int scrn, Resource &conf) : ScreenInfo(ob, scrn),
 
   workspaceNames = new LinkedList<char>;
   workspacesList = new LinkedList<Workspace>;
-  rootmenuList = new LinkedList<Rootmenu>;
-  netizenList = new LinkedList<Netizen>;
   iconList = new LinkedList<OpenboxWindow>;
 
   image_control =
@@ -484,9 +482,8 @@ BScreen::BScreen(Openbox &ob, int scrn, Resource &conf) : ScreenInfo(ob, scrn),
     }
   }
 
-  if (! resource.sloppy_focus)
-    XSetInputFocus(getBaseDisplay().getXDisplay(), toolbar->getWindowID(),
-                  RevertToParent, CurrentTime);
+  XSetInputFocus(getBaseDisplay().getXDisplay(),
+                 PointerRoot, None, CurrentTime);
 
   XFree(children);
   XFlush(getBaseDisplay().getXDisplay());
@@ -507,14 +504,14 @@ BScreen::~BScreen(void) {
   while (workspacesList->count())
     delete workspacesList->remove(0);
 
-  while (rootmenuList->count())
-    rootmenuList->remove(0);
+  while (!rootmenuList.empty())
+    rootmenuList.erase(rootmenuList.begin());
 
   while (iconList->count())
     delete iconList->remove(0);
 
-  while (netizenList->count())
-    delete netizenList->remove(0);
+  while (!netizenList.empty())
+    netizenList.erase(netizenList.begin());
 
 #ifdef    HAVE_STRFTIME
   if (resource.strftime_format)
@@ -535,9 +532,7 @@ BScreen::~BScreen(void) {
 
   delete workspacesList;
   delete workspaceNames;
-  delete rootmenuList;
   delete iconList;
-  delete netizenList;
 
   if (resource.wstyle.fontset)
     XFreeFontSet(getBaseDisplay().getXDisplay(), resource.wstyle.fontset);
@@ -2012,7 +2007,7 @@ void BScreen::changeWorkspaceID(int id) {
 
 
 void BScreen::addNetizen(Netizen *n) {
-  netizenList->insert(n);
+  netizenList.push_back(n);
 
   n->sendWorkspaceCount();
   n->sendCurrentWorkspace();
@@ -2031,80 +2026,79 @@ void BScreen::addNetizen(Netizen *n) {
 
 
 void BScreen::removeNetizen(Window w) {
-  LinkedListIterator<Netizen> it(netizenList);
+  netList::iterator it;
   int i = 0;
 
-  for (Netizen *n = it.current(); n; it++, i++, n = it.current())
-    if (n->getWindowID() == w) {
-      Netizen *tmp = netizenList->remove(i);
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    if ((*it)->getWindowID() == w) {
+      Netizen *tmp = *it;
+      netizenList.erase(it);
       delete tmp;
-
       break;
     }
 }
 
 
 void BScreen::updateNetizenCurrentWorkspace(void) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendCurrentWorkspace();
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendCurrentWorkspace();
 }
 
 
 void BScreen::updateNetizenWorkspaceCount(void) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWorkspaceCount();
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWorkspaceCount();
 }
 
 
 void BScreen::updateNetizenWindowFocus(void) {
   Window f = ((openbox.focusedWindow()) ?
               openbox.focusedWindow()->getClientWindow() : None);
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWindowFocus(f);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWindowFocus(f);
 }
 
-
 void BScreen::updateNetizenWindowAdd(Window w, unsigned long p) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWindowAdd(w, p);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWindowAdd(w, p);
 }
 
 
 void BScreen::updateNetizenWindowDel(Window w) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWindowDel(w);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWindowDel(w);
 }
 
 
 void BScreen::updateNetizenWindowRaise(Window w) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWindowRaise(w);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWindowRaise(w);
 }
 
 
 void BScreen::updateNetizenWindowLower(Window w) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendWindowLower(w);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendWindowLower(w);
 }
 
 
 void BScreen::updateNetizenConfigNotify(XEvent *e) {
-  LinkedListIterator<Netizen> it(netizenList);
-  for (Netizen *n = it.current(); n; it++, n = it.current())
-    n->sendConfigNotify(e);
+  netList::iterator it;
+  for (it = netizenList.begin(); it != netizenList.end(); ++it)
+    (*it)->sendConfigNotify(e);
 }
 
 
 void BScreen::raiseWindows(Window *workspace_stack, int num) {
   Window *session_stack = new
-    Window[(num + workspacesList->count() + rootmenuList->count() + 13)];
+    Window[(num + workspacesList->count() + rootmenuList.size() + 13)];
   int i = 0, k = num;
 
   XRaiseWindow(getBaseDisplay().getXDisplay(), iconmenu->getWindowID());
@@ -2130,9 +2124,9 @@ void BScreen::raiseWindows(Window *workspace_stack, int num) {
     toolbar->getMenu()->getPlacementmenu()->getWindowID();
   *(session_stack + i++) = toolbar->getMenu()->getWindowID();
 
-  LinkedListIterator<Rootmenu> rit(rootmenuList);
-  for (Rootmenu *tmp = rit.current(); tmp; rit++, tmp = rit.current())
-    *(session_stack + i++) = tmp->getWindowID();
+  menuList::iterator rit;
+  for (rit = rootmenuList.begin(); rit != rootmenuList.end(); ++rit)
+    *(session_stack + i++) = (*rit)->getWindowID();
   *(session_stack + i++) = rootmenu->getWindowID();
 
   if (toolbar->onTop())
@@ -2276,8 +2270,8 @@ void BScreen::raiseFocus(void) {
 
 void BScreen::InitMenu(void) {
   if (rootmenu) {
-    while (rootmenuList->count())
-      rootmenuList->remove(0);
+    while (!rootmenuList.empty())
+      rootmenuList.erase(rootmenuList.begin());
 
     while (rootmenu->getCount())
       rootmenu->remove(0);
@@ -2580,7 +2574,7 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
            parseMenuFile(file, submenu);
            submenu->update();
            menu->insert(label, submenu);
-           rootmenuList->insert(submenu);
+           rootmenuList.push_back(submenu);
          }
 
          break;
@@ -2706,7 +2700,7 @@ Bool BScreen::parseMenuFile(FILE *file, Rootmenu *menu) {
                 if (newmenu) {
                   stylesmenu->setLabel(label);
                   menu->insert(label, stylesmenu);
-                  rootmenuList->insert(stylesmenu);
+                  rootmenuList.push_back(stylesmenu);
                 }
 
                 openbox.setMenuFilename(stylesdir);
index 8d5b09b8da042b5b69aae69c9ce21e035c62d482..d496914bf2f1c4e9cc5b9b3dfb4230b6a9a4f3ae 100644 (file)
 #include "Image.h"
 #include "Resource.h"
 
+#include <list>
+typedef std::list<Rootmenu *> menuList;
+typedef std::list<Netizen *> netList;
+
 // forward declaration
 class BScreen;
 
@@ -109,8 +113,8 @@ private:
   Iconmenu *iconmenu;
   Rootmenu *rootmenu;
 
-  LinkedList<Rootmenu> *rootmenuList;
-  LinkedList<Netizen> *netizenList;
+  menuList rootmenuList;
+  netList netizenList;
   LinkedList<OpenboxWindow> *iconList;
 
 #ifdef    SLIT
index 7659c87f6291ec927d8959007303e6cc986dd728..7e28fe620cf6ef953d7893a7da0746af0d0ad604 100644 (file)
@@ -971,9 +971,7 @@ void Toolbar::edit() {
     return;
 
   XSetInputFocus(display, frame.workspace_label,
-                 ((screen.sloppyFocus()) ? RevertToPointerRoot :
-                  RevertToParent),
-                 CurrentTime);
+                 RevertToPointerRoot, CurrentTime);
   XClearWindow(display, frame.workspace_label);
 
   openbox.setNoFocus(True);
index 5a28d23254053874f2bb3a565d2de027ed4c4458..6222546f67965e1a4d8af5248a751e33b6ebe8d2 100644 (file)
@@ -1388,7 +1388,7 @@ Bool OpenboxWindow::setInputFocus(void) {
   } else if (! flags.focused) {
     if (focus_mode == F_LocallyActive || focus_mode == F_Passive)
       XSetInputFocus(display, client.window,
-                    RevertToPointerRoot, CurrentTime);
+                      RevertToPointerRoot, CurrentTime);
     else
       XSetInputFocus(display, screen->getRootWindow(),
                     RevertToNone, CurrentTime);
index 4b9bb33b93ae6045d5237470beab0c6e3f7bed81..256ad3da9845c18c6f1b8f3b7f7a7d53eb14a32b 100644 (file)
@@ -115,14 +115,13 @@ const int Workspace::removeWindow(OpenboxWindow *w) {
     if (w->isTransient() && w->getTransientFor() &&
        w->getTransientFor()->isVisible()) {
       w->getTransientFor()->setInputFocus();
-    } else if (screen.sloppyFocus()) {
-      screen.getOpenbox().focusWindow((OpenboxWindow *) 0);
     } else {
-      if (_zorder.empty() || !_zorder.front()->setInputFocus()) {
+      if (screen.sloppyFocus() ||               // sloppy focus
+          _zorder.empty() ||                    // click focus but no windows
+          !_zorder.front()->setInputFocus()) {  // tried window, but wont focus
        screen.getOpenbox().focusWindow((OpenboxWindow *) 0);
-       XSetInputFocus(screen.getOpenbox().getXDisplay(),
-                      screen.getToolbar()->getWindowID(),
-                      RevertToParent, CurrentTime);
+        XSetInputFocus(screen.getOpenbox().getXDisplay(),
+                       PointerRoot, None, CurrentTime);
       }
     }
   }
@@ -319,7 +318,7 @@ void Workspace::setName(char *new_name) {
 void Workspace::shutdown(void) {
   while (!_windows.empty()) {
     _windows[0]->restore();
-    _windows.erase(_windows.begin());
+    delete _windows[0];
   }
 }
 
This page took 0.035155 seconds and 4 git commands to generate.