all repos — openbox @ a0dbb0e13f19ac4cc2dddf3d94723174971df6d2

openbox fork - make it a bit more like ryudo

couple of LinkedLists converted to STL lists in BScreen
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'
Dana Jansens danakj@orodu.net
commit

a0dbb0e13f19ac4cc2dddf3d94723174971df6d2

parent

f804f86c3eacc11091cbff2fa287799f925c2635

6 files changed, 62 insertions(+), 80 deletions(-)

jump to
M src/Configmenu.ccsrc/Configmenu.cc

@@ -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 @@ switch (item->function()) {

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; }
M src/Screen.ccsrc/Screen.cc

@@ -236,8 +236,6 @@ openbox.getSessionCursor());

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 @@ }

} } - 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 @@

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 @@ delete image_control;

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::addNetizen(Netizen *n) { - netizenList->insert(n); + netizenList.push_back(n); n->sendWorkspaceCount(); n->sendCurrentWorkspace();

@@ -2031,80 +2026,79 @@ }

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 @@ *(session_stack + i++) =

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::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 @@

parseMenuFile(file, submenu); submenu->update(); menu->insert(label, submenu); - rootmenuList->insert(submenu); + rootmenuList.push_back(submenu); } break;

@@ -2706,7 +2700,7 @@

if (newmenu) { stylesmenu->setLabel(label); menu->insert(label, stylesmenu); - rootmenuList->insert(stylesmenu); + rootmenuList.push_back(stylesmenu); } openbox.setMenuFilename(stylesdir);
M src/Screen.hsrc/Screen.h

@@ -53,6 +53,10 @@ #endif // SLIT

#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 @@ Configmenu *configmenu;

Iconmenu *iconmenu; Rootmenu *rootmenu; - LinkedList<Rootmenu> *rootmenuList; - LinkedList<Netizen> *netizenList; + menuList rootmenuList; + netList netizenList; LinkedList<OpenboxWindow> *iconList; #ifdef SLIT
M src/Toolbar.ccsrc/Toolbar.cc

@@ -971,9 +971,7 @@ window == frame.workspace_label)

return; XSetInputFocus(display, frame.workspace_label, - ((screen.sloppyFocus()) ? RevertToPointerRoot : - RevertToParent), - CurrentTime); + RevertToPointerRoot, CurrentTime); XClearWindow(display, frame.workspace_label); openbox.setNoFocus(True);
M src/Window.ccsrc/Window.cc

@@ -1388,7 +1388,7 @@ ret = client.transient->setInputFocus();

} 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);
M src/Workspace.ccsrc/Workspace.cc

@@ -115,14 +115,13 @@ if (w->isFocused()) {

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::shutdown(void) { while (!_windows.empty()) { _windows[0]->restore(); - _windows.erase(_windows.begin()); + delete _windows[0]; } }