all repos — fluxbox @ 0c4c33f9f595818868dc83f8582909f68dd7efdd

custom fork of the fluxbox windowmanager

replaced LinkedList with stl container
fluxgen fluxgen
commit

0c4c33f9f595818868dc83f8582909f68dd7efdd

parent

1207f0cd2e772e9980e303c78ebe6f358888980e

4 files changed, 224 insertions(+), 197 deletions(-)

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

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Basemenu.cc,v 1.7 2002/01/26 11:22:06 fluxgen Exp $ +// $Id: Basemenu.cc,v 1.8 2002/02/04 22:33:09 fluxgen Exp $ // stupid macros needed to access some functions in version 2 of the GNU C // library

@@ -155,8 +155,6 @@ screen->getDepth(), InputOutput,

screen->getVisual(), attrib_mask, &attrib); fluxbox->saveMenuSearch(menu.frame, this); - menuitems = new LinkedList<BasemenuItem>; - // even though this is the end of the constructor the menu is still not // completely created. items must be inserted and it must be update()'d }

@@ -168,11 +166,9 @@

if (shown && shown->getWindowID() == getWindowID()) shown = (Basemenu *) 0; - int n = menuitems->count(); + int n = menuitems.size() - 1; for (int i = 0; i < n; ++i) remove(0); - - delete menuitems; if (menu.label) delete [] menu.label;

@@ -207,9 +203,13 @@ if (l) label = StringUtil::strdup(l);

if (e) exec = StringUtil::strdup(e); BasemenuItem *item = new BasemenuItem(label, function, exec); - menuitems->insert(item, pos); + if (pos == -1) { + menuitems.push_back(item); + } else { + menuitems.insert(menuitems.begin() + pos, item); + } - return menuitems->count(); + return menuitems.size(); }

@@ -219,26 +219,35 @@

if (l) label = StringUtil::strdup(l); BasemenuItem *item = new BasemenuItem(label, submenu); - menuitems->insert(item, pos); + if (pos == -1) { + menuitems.push_back(item); + } else { + menuitems.insert(menuitems.begin() + pos, item); + } submenu->parent = this; - return menuitems->count(); + return menuitems.size(); } int Basemenu::insert(const char **ulabel, int pos, int function) { BasemenuItem *item = new BasemenuItem(ulabel, function); - menuitems->insert(item, pos); + if (pos == -1) { + menuitems.push_back(item); + } else { + menuitems.insert(menuitems.begin() + pos, item); + } - return menuitems->count(); + return menuitems.size(); } int Basemenu::remove(int index) { - if (index < 0 || index > menuitems->count()) return -1; + if (index < 0 || index > menuitems.size()) return -1; - BasemenuItem *item = menuitems->remove(index); + Menuitems::iterator it = menuitems.erase(menuitems.begin() + index); + BasemenuItem *item = (*it); if (item) { if ((! internal_menu) && (item->submenu())) {

@@ -247,8 +256,7 @@

if (! tmp->internal_menu) { delete tmp; } else - - tmp->internal_hide(); + tmp->internal_hide(); } if (item->label())

@@ -265,7 +273,7 @@ which_sub = -1;

else if (which_sub > index) which_sub--; - return menuitems->count(); + return menuitems.size(); }

@@ -310,9 +318,10 @@ } else

menu.item_w = 1; int ii = 0; - LinkedListIterator<BasemenuItem> it(menuitems); - for (; it.current(); it++) { - BasemenuItem *itmp = it.current(); + Menuitems::iterator it = menuitems.begin(); + Menuitems::iterator it_end = menuitems.end(); + for (; it != it_end; ++it) { + BasemenuItem *itmp = (*it); const char *s = ((itmp->u && *itmp->u) ? *itmp->u : ((itmp->l) ? itmp->l : (const char *) 0));

@@ -330,18 +339,18 @@

menu.item_w = ((menu.item_w < (unsigned int) ii) ? ii : menu.item_w); } - if (menuitems->count()) { + if (menuitems.size()) { menu.sublevels = 1; - while (((menu.item_h * (menuitems->count() + 1) / menu.sublevels) + while (((menu.item_h * (menuitems.size() + 1) / menu.sublevels) + menu.title_h + screen->getBorderWidth()) > screen->getHeight()) menu.sublevels++; if (menu.sublevels < menu.minsub) menu.sublevels = menu.minsub; - menu.persub = menuitems->count() / menu.sublevels; - if (menuitems->count() % menu.sublevels) menu.persub++; + menu.persub = menuitems.size() / menu.sublevels; + if (menuitems.size() % menu.sublevels) menu.persub++; } else { menu.sublevels = 0; menu.persub = 0;

@@ -423,7 +432,7 @@

if (title_vis && visible) redrawTitle(); int i = 0; - for (i = 0; visible && i < menuitems->count(); i++) + for (i = 0; visible && i < menuitems.size(); i++) if (i == which_sub) { drawItem(i, True, 0); drawSubmenu(i);

@@ -464,7 +473,7 @@

void Basemenu::internal_hide(void) { if (which_sub != -1) { - BasemenuItem *tmp = menuitems->find(which_sub); + BasemenuItem *tmp = menuitems[which_sub]; tmp->submenu()->internal_hide(); }

@@ -539,14 +548,14 @@

void Basemenu::drawSubmenu(int index) { if (which_sub != -1 && which_sub != index) { - BasemenuItem *itmp = menuitems->find(which_sub); + BasemenuItem *itmp = menuitems[which_sub]; if (! itmp->submenu()->isTorn()) itmp->submenu()->internal_hide(); } - if (index >= 0 && index < menuitems->count()) { - BasemenuItem *item = menuitems->find(index); + if (index >= 0 && index < menuitems.size()) { + BasemenuItem *item = menuitems[index]; if (item->submenu() && visible && (! item->submenu()->isTorn()) && item->isEnabled()) {

@@ -607,8 +616,8 @@ }

Bool Basemenu::hasSubmenu(int index) { - if ((index >= 0) && (index < menuitems->count())) - if (menuitems->find(index)->submenu()) + if ((index >= 0) && (index < menuitems.size())) + if (menuitems[index]->submenu()) return True; else return False;

@@ -620,9 +629,9 @@

void Basemenu::drawItem(int index, Bool highlight, Bool clear, int x, int y, unsigned int w, unsigned int h) { - if (index < 0 || index > menuitems->count()) return; + if (index < 0 || index > menuitems.size()) return; - BasemenuItem *item = menuitems->find(index); + BasemenuItem *item = menuitems[index]; if (! item) return; Bool dotext = True, dohilite = True, dosel = True;

@@ -802,7 +811,7 @@ }

void Basemenu::setItemSelected(int index, Bool sel) { - if (index < 0 || index >= menuitems->count()) return; + if (index < 0 || index >= menuitems.size()) return; BasemenuItem *item = find(index); if (! item) return;

@@ -813,7 +822,7 @@ }

Bool Basemenu::isItemSelected(int index) { - if (index < 0 || index >= menuitems->count()) return False; + if (index < 0 || index >= menuitems.size()) return False; BasemenuItem *item = find(index); if (! item) return False;

@@ -823,7 +832,7 @@ }

void Basemenu::setItemEnabled(int index, Bool enable) { - if (index < 0 || index >= menuitems->count()) return; + if (index < 0 || index >= menuitems.size()) return; BasemenuItem *item = find(index); if (! item) return;

@@ -834,7 +843,7 @@ }

Bool Basemenu::isItemEnabled(int index) { - if (index < 0 || index >= menuitems->count()) return False; + if (index < 0 || index >= menuitems.size()) return False; BasemenuItem *item = find(index); if (! item) return False;

@@ -848,11 +857,11 @@ if (be->window == menu.frame) {

int sbl = (be->x / menu.item_w), i = (be->y / menu.item_h); int w = (sbl * menu.persub) + i; - if (w < menuitems->count() && w >= 0) { + if (w < menuitems.size() && w >= 0) { which_press = i; which_sbl = sbl; - BasemenuItem *item = menuitems->find(w); + BasemenuItem *item = menuitems[w]; if (item->submenu()) drawSubmenu(w);

@@ -891,7 +900,7 @@ ix = sbl * menu.item_w, iy = i * menu.item_h,

w = (sbl * menu.persub) + i, p = (which_sbl * menu.persub) + which_press; - if (w < menuitems->count() && w >= 0) { + if (w < menuitems.size() && w >= 0) { drawItem(p, (p == which_sub), True); if (p == w && isItemEnabled(w)) {

@@ -937,10 +946,10 @@ int sbl = (me->x / menu.item_w), i = (me->y / menu.item_h),

w = (sbl * menu.persub) + i; if ((i != which_press || sbl != which_sbl) && - (w < menuitems->count() && w >= 0)) { + (w < menuitems.size() && w >= 0)) { if (which_press != -1 && which_sbl != -1) { int p = (which_sbl * menu.persub) + which_press; - BasemenuItem *item = menuitems->find(p); + BasemenuItem *item = menuitems[p]; drawItem(p, False, True); if (item->submenu()) {

@@ -955,7 +964,7 @@

which_press = i; which_sbl = sbl; - BasemenuItem *itmp = menuitems->find(w); + BasemenuItem *itmp = menuitems[w]; if (itmp->submenu()) drawSubmenu(w);

@@ -970,8 +979,6 @@ void Basemenu::exposeEvent(XExposeEvent *ee) {

if (ee->window == menu.title) { redrawTitle(); } else if (ee->window == menu.frame) { - LinkedListIterator<BasemenuItem> it(menuitems); - // this is a compilicated algorithm... lets do it step by step... // first... we see in which sub level the expose starts... and how many // items down in that sublevel

@@ -988,12 +995,16 @@ // draw the sublevels and the number of items the exposure spans

int i, ii; for (i = sbl; i <= sbl_d; i++) { // set the iterator to the first item in the sublevel needing redrawing - it.set(id + (i * menu.persub)); - for (ii = id; ii <= id_d && it.current(); it++, ii++) { - int index = ii + (i * menu.persub); - // redraw the item - drawItem(index, (which_sub == index), False, - ee->x, ee->y, ee->width, ee->height); + int index = id + i * menu.persub; + if (index < menuitems.size() && index >= 0) { + Menuitems::iterator it = menuitems.begin() + index; + Menuitems::iterator it_end = menuitems.end(); + for (ii = id; ii <= id_d && it != it_end; ++it, ii++) { + int index = ii + (i * menu.persub); + // redraw the item + drawItem(index, (which_sub == index), False, + ee->x, ee->y, ee->width, ee->height); + } } } }

@@ -1025,7 +1036,7 @@ if (shifted)

XMoveWindow(display, menu.window, menu.x_shift, menu.y_shift); if (which_sub != -1) { - BasemenuItem *tmp = menuitems->find(which_sub); + BasemenuItem *tmp = menuitems[which_sub]; if (tmp->submenu()->isVisible()) { int sbl = (ce->x / menu.item_w), i = (ce->y / menu.item_h), w = (sbl * menu.persub) + i;

@@ -1044,7 +1055,7 @@

void Basemenu::leaveNotifyEvent(XCrossingEvent *ce) { if (ce->window == menu.frame) { - if (which_press != -1 && which_sbl != -1 && menuitems->count() > 0) { + if (which_press != -1 && which_sbl != -1 && menuitems.size() > 0) { int p = (which_sbl * menu.persub) + which_press; drawItem(p, (p == which_sub), True);
M src/Basemenu.hhsrc/Basemenu.hh

@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Basemenu.hh,v 1.4 2002/01/11 09:24:46 fluxgen Exp $ +// $Id: Basemenu.hh,v 1.5 2002/02/04 22:33:09 fluxgen Exp $ #ifndef _BASEMENU_HH_ #define _BASEMENU_HH_

@@ -37,12 +37,12 @@ class Fluxbox;

class BImageControl; class BScreen; -#include "LinkedList.hh" - +#include <vector> class Basemenu { private: - LinkedList<BasemenuItem> *menuitems; + typedef std::vector<BasemenuItem *> Menuitems; + Menuitems menuitems; Fluxbox *fluxbox; Basemenu *parent; BImageControl *image_ctrl;

@@ -66,7 +66,7 @@ } menu;

protected: - inline BasemenuItem *find(int index) { return menuitems->find(index); } + inline BasemenuItem *find(int index) { return menuitems[index]; } inline void setTitleVisibility(Bool b) { title_vis = b; } inline void setMovable(Bool b) { movable = b; } inline void setHideTree(Bool h) { hide_tree = h; }

@@ -99,7 +99,7 @@ int remove(int);

inline const int &getX(void) const { return menu.x; } inline const int &getY(void) const { return menu.y; } - inline int getCount(void) { return menuitems->count(); } + inline int getCount(void) { return menuitems.size(); } inline const int &getCurrentSubmenu(void) const { return which_sub; } inline const unsigned int &getWidth(void) const { return menu.width; }
M src/Slit.ccsrc/Slit.cc

@@ -40,6 +40,8 @@ #include "Screen.hh"

#include "Slit.hh" #include "Toolbar.hh" +#include <algorithm> + Slit::Slit(BScreen *scr) { screen = scr;

@@ -55,13 +57,11 @@ timer = new BTimer(fluxbox, this);

timer->setTimeout(fluxbox->getAutoRaiseDelay()); timer->fireOnce(True); - clientList = new LinkedList<SlitClient>; - slitmenu = new Slitmenu(this); XSetWindowAttributes attrib; unsigned long create_mask = CWBackPixmap | CWBackPixel | CWBorderPixel | - CWColormap | CWOverrideRedirect | CWEventMask; + CWColormap | CWOverrideRedirect | CWEventMask; attrib.background_pixmap = None; attrib.background_pixel = attrib.border_pixel = screen->getBorderColor()->getPixel();

@@ -87,10 +87,8 @@

Slit::~Slit() { fluxbox->grab(); - if (timer->isTiming()) timer->stop(); delete timer; - delete clientList; delete slitmenu; screen->getImageControl()->removeImage(frame.pixmap);

@@ -116,9 +114,8 @@ if (wmhints) {

if ((wmhints->flags & IconWindowHint) && (wmhints->icon_window != None)) { XMoveWindow(display, client->client_window, screen->getWidth() + 10, - screen->getHeight() + 10); - XMapWindow(display, client->client_window); - + screen->getHeight() + 10); + XMapWindow(display, client->client_window); client->icon_window = wmhints->icon_window; client->window = client->icon_window; } else {

@@ -150,24 +147,24 @@ unsigned long *data = (unsigned long *) 0, uljunk;

// Check if KDE v2.x dock applet if (XGetWindowProperty(fluxbox->getXDisplay(), w, - fluxbox->getKWM2DockwindowAtom(), 0l, 1l, False, - fluxbox->getKWM2DockwindowAtom(), - &ajunk, &ijunk, &uljunk, &uljunk, - (unsigned char **) &data) == Success) { + fluxbox->getKWM2DockwindowAtom(), 0l, 1l, False, + fluxbox->getKWM2DockwindowAtom(), + &ajunk, &ijunk, &uljunk, &uljunk, + (unsigned char **) &data) == Success) { iskdedockapp = (data && data[0] != 0); XFree((char *) data); - } + } // Check if KDE v1.x dock applet if (!iskdedockapp) { if (XGetWindowProperty(fluxbox->getXDisplay(), w, - fluxbox->getKWM1DockwindowAtom(), 0l, 1l, False, - fluxbox->getKWM1DockwindowAtom(), - &ajunk, &ijunk, &uljunk, &uljunk, - (unsigned char **) &data) == Success) { + fluxbox->getKWM1DockwindowAtom(), 0l, 1l, False, + fluxbox->getKWM1DockwindowAtom(), + &ajunk, &ijunk, &uljunk, &uljunk, + (unsigned char **) &data) == Success) { iskdedockapp = (data && data[0] != 0); - XFree((char *) data); - } + XFree((char *) data); + } } if (iskdedockapp)

@@ -187,16 +184,16 @@ XSelectInput(display, frame.window, NoEventMask);

XSelectInput(display, client->window, NoEventMask); XReparentWindow(display, client->window, frame.window, 0, 0); - XMapRaised(display, client->window); //TODO: bbkeys bug here? + XMapRaised(display, client->window); XChangeSaveSet(display, client->window, SetModeInsert); XSelectInput(display, frame.window, SubstructureRedirectMask | - ButtonPressMask | EnterWindowMask | LeaveWindowMask); + ButtonPressMask | EnterWindowMask | LeaveWindowMask); XSelectInput(display, client->window, StructureNotifyMask | - SubstructureNotifyMask | EnterWindowMask); + SubstructureNotifyMask | EnterWindowMask); XFlush(display); - clientList->insert(client); + clientList.push_back(client); fluxbox->saveSlitSearch(client->client_window, this); fluxbox->saveSlitSearch(client->icon_window, this);

@@ -207,10 +204,11 @@ fluxbox->ungrab();

} -void Slit::removeClient(SlitClient *client, Bool remap) { +void Slit::removeClient(SlitClient *client, bool remap) { fluxbox->removeSlitSearch(client->client_window); fluxbox->removeSlitSearch(client->icon_window); - clientList->remove(client); + + clientList.remove(client); screen->removeNetizen(client->window);

@@ -218,10 +216,10 @@ if (remap && fluxbox->validateWindow(client->window)) {

XSelectInput(display, frame.window, NoEventMask); XSelectInput(display, client->window, NoEventMask); XReparentWindow(display, client->window, screen->getRootWindow(), - client->x, client->y); + client->x, client->y); XChangeSaveSet(display, client->window, SetModeDelete); XSelectInput(display, frame.window, SubstructureRedirectMask | - ButtonPressMask | EnterWindowMask | LeaveWindowMask); + ButtonPressMask | EnterWindowMask | LeaveWindowMask); XFlush(display); }

@@ -229,20 +227,21 @@ delete client;

} -void Slit::removeClient(Window w, Bool remap) { +void Slit::removeClient(Window w, bool remap) { fluxbox->grab(); - Bool reconf = False; + bool reconf = false; - LinkedListIterator<SlitClient> it(clientList); - for (; it.current(); it++) - if (it.current()->window == w) { - removeClient(it.current(), remap); - reconf = True; + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) { + if ((*it)->window == w) { + removeClient((*it), remap); + reconf = true; break; } - + } if (reconf) reconfigure(); fluxbox->ungrab();

@@ -252,15 +251,18 @@

void Slit::reconfigure(void) { frame.width = 0; frame.height = 0; - LinkedListIterator<SlitClient> it(clientList); switch (screen->getSlitDirection()) { case VERTICAL: - for (; it.current(); it++) { - frame.height += it.current()->height + screen->getBevelWidth(); + { + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) { + frame.height += (*it)->height + screen->getBevelWidth(); - if (frame.width < it.current()->width) - frame.width = it.current()->width; + if (frame.width < (*it)->width) + frame.width = (*it)->width; + } } if (frame.width < 1)

@@ -276,11 +278,15 @@

break; case HORIZONTAL: - for (; it.current(); it++) { - frame.width += it.current()->width + screen->getBevelWidth(); + { + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) { + frame.width += (*it)->width + screen->getBevelWidth(); - if (frame.height < it.current()->height) - frame.height = it.current()->height; + if (frame.height < (*it)->height) + frame.height = (*it)->height; + } } if (frame.width < 1)

@@ -300,9 +306,9 @@ reposition();

XSetWindowBorderWidth(display ,frame.window, screen->getBorderWidth()); XSetWindowBorder(display, frame.window, - screen->getBorderColor()->getPixel()); + screen->getBorderColor()->getPixel()); - if (! clientList->count()) + if (clientList.size()==0) XUnmapWindow(display, frame.window); else XMapWindow(display, frame.window);

@@ -316,49 +322,52 @@ XSetWindowBackground(display, frame.window,

texture->getColor()->getPixel()); } else { frame.pixmap = image_ctrl->renderImage(frame.width, frame.height, - texture); + texture); XSetWindowBackgroundPixmap(display, frame.window, frame.pixmap); } if (tmp) image_ctrl->removeImage(tmp); XClearWindow(display, frame.window); int x, y; - it.reset(); switch (screen->getSlitDirection()) { case VERTICAL: x = 0; y = screen->getBevelWidth(); - for (; it.current(); it++) { - x = (frame.width - it.current()->width) / 2; + { + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) { + x = (frame.width - (*it)->width) / 2; - XMoveResizeWindow(display, it.current()->window, x, y, - it.current()->width, it.current()->height); - XMapWindow(display, it.current()->window); + XMoveResizeWindow(display, (*it)->window, x, y, + (*it)->width, (*it)->height); + XMapWindow(display, (*it)->window); - // for ICCCM compliance - it.current()->x = x; - it.current()->y = y; + // for ICCCM compliance + (*it)->x = x; + (*it)->y = y; - XEvent event; - event.type = ConfigureNotify; + XEvent event; + event.type = ConfigureNotify; - event.xconfigure.display = display; - event.xconfigure.event = it.current()->window; - event.xconfigure.window = it.current()->window; - event.xconfigure.x = x; - event.xconfigure.y = y; - event.xconfigure.width = it.current()->width; - event.xconfigure.height = it.current()->height; - event.xconfigure.border_width = 0; - event.xconfigure.above = frame.window; - event.xconfigure.override_redirect = False; + event.xconfigure.display = display; + event.xconfigure.event = (*it)->window; + event.xconfigure.window = (*it)->window; + event.xconfigure.x = x; + event.xconfigure.y = y; + event.xconfigure.width = (*it)->width; + event.xconfigure.height = (*it)->height; + event.xconfigure.border_width = 0; + event.xconfigure.above = frame.window; + event.xconfigure.override_redirect = False; - XSendEvent(display, it.current()->window, False, StructureNotifyMask, - &event); + XSendEvent(display, (*it)->window, False, StructureNotifyMask, + &event); - y += it.current()->height + screen->getBevelWidth(); + y += (*it)->height + screen->getBevelWidth(); + } } break;

@@ -367,35 +376,39 @@ case HORIZONTAL:

x = screen->getBevelWidth(); y = 0; - for (; it.current(); it++) { - y = (frame.height - it.current()->height) / 2; + { + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) { + y = (frame.height - (*it)->height) / 2; - XMoveResizeWindow(display, it.current()->window, x, y, - it.current()->width, it.current()->height); - XMapWindow(display, it.current()->window); + XMoveResizeWindow(display, (*it)->window, x, y, + (*it)->width, (*it)->height); + XMapWindow(display, (*it)->window); - // for ICCCM compliance - it.current()->x = x; - it.current()->y = y; + // for ICCCM compliance + (*it)->x = x; + (*it)->y = y; - XEvent event; - event.type = ConfigureNotify; + XEvent event; + event.type = ConfigureNotify; - event.xconfigure.display = display; - event.xconfigure.event = it.current()->window; - event.xconfigure.window = it.current()->window; - event.xconfigure.x = frame.x + x + screen->getBorderWidth(); - event.xconfigure.y = frame.y + y + screen->getBorderWidth(); - event.xconfigure.width = it.current()->width; - event.xconfigure.height = it.current()->height; - event.xconfigure.border_width = 0; - event.xconfigure.above = frame.window; - event.xconfigure.override_redirect = False; + event.xconfigure.display = display; + event.xconfigure.event = (*it)->window; + event.xconfigure.window = (*it)->window; + event.xconfigure.x = frame.x + x + screen->getBorderWidth(); + event.xconfigure.y = frame.y + y + screen->getBorderWidth(); + event.xconfigure.width = (*it)->width; + event.xconfigure.height = (*it)->height; + event.xconfigure.border_width = 0; + event.xconfigure.above = frame.window; + event.xconfigure.override_redirect = False; - XSendEvent(display, it.current()->window, False, StructureNotifyMask, - &event); + XSendEvent(display, (*it)->window, False, StructureNotifyMask, + &event); - x += it.current()->width + screen->getBevelWidth(); + x += (*it)->width + screen->getBevelWidth(); + } } break;

@@ -412,21 +425,21 @@ case TOPLEFT:

frame.x = 0; frame.y = 0; if (screen->getSlitDirection() == VERTICAL) { - frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth() - - frame.width; + frame.x_hidden = screen->getBevelWidth() - + screen->getBorderWidth() - frame.width; frame.y_hidden = 0; } else { frame.x_hidden = 0; - frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth() - - frame.height; + frame.y_hidden = screen->getBevelWidth() - + screen->getBorderWidth() - frame.height; } break; case CENTERLEFT: frame.x = 0; frame.y = (screen->getHeight() - frame.height) / 2; - frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth() - - frame.width; + frame.x_hidden = screen->getBevelWidth() - + screen->getBorderWidth() - frame.width; frame.y_hidden = frame.y; break;

@@ -439,8 +452,8 @@ - frame.width;

frame.y_hidden = frame.y; } else { frame.x_hidden = 0; - frame.y_hidden = screen->getHeight() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.y_hidden = screen->getHeight() - + screen->getBevelWidth() - screen->getBorderWidth(); } break;

@@ -448,29 +461,29 @@ case TOPCENTER:

frame.x = (screen->getWidth() - frame.width) / 2; frame.y = 0; frame.x_hidden = frame.x; - frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth() - - frame.height; + frame.y_hidden = screen->getBevelWidth() - + screen->getBorderWidth() - frame.height; break; case BOTTOMCENTER: frame.x = (screen->getWidth() - frame.width) / 2; frame.y = screen->getHeight() - frame.height - screen->getBorderWidth2x(); frame.x_hidden = frame.x; - frame.y_hidden = screen->getHeight() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.y_hidden = screen->getHeight() - + screen->getBevelWidth() - screen->getBorderWidth(); break; case TOPRIGHT: frame.x = screen->getWidth() - frame.width - screen->getBorderWidth2x(); frame.y = 0; if (screen->getSlitDirection() == VERTICAL) { - frame.x_hidden = screen->getWidth() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.x_hidden = screen->getWidth() - + screen->getBevelWidth() - screen->getBorderWidth(); frame.y_hidden = 0; } else { frame.x_hidden = frame.x; - frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth() - - frame.height; + frame.y_hidden = screen->getBevelWidth() - + screen->getBorderWidth() - frame.height; } break;

@@ -478,8 +491,8 @@ case CENTERRIGHT:

default: frame.x = screen->getWidth() - frame.width - screen->getBorderWidth2x(); frame.y = (screen->getHeight() - frame.height) / 2; - frame.x_hidden = screen->getWidth() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.x_hidden = screen->getWidth() - + screen->getBevelWidth() - screen->getBorderWidth(); frame.y_hidden = frame.y; break;

@@ -487,22 +500,22 @@ case BOTTOMRIGHT:

frame.x = screen->getWidth() - frame.width - screen->getBorderWidth2x(); frame.y = screen->getHeight() - frame.height - screen->getBorderWidth2x(); if (screen->getSlitDirection() == VERTICAL) { - frame.x_hidden = screen->getWidth() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.x_hidden = screen->getWidth() - + screen->getBevelWidth() - screen->getBorderWidth(); frame.y_hidden = frame.y; } else { frame.x_hidden = frame.x; - frame.y_hidden = screen->getHeight() - screen->getBevelWidth() - - screen->getBorderWidth(); + frame.y_hidden = screen->getHeight() - + screen->getBevelWidth() - screen->getBorderWidth(); } break; } Toolbar *tbar = screen->getToolbar(); int sw = frame.width + screen->getBorderWidth2x(), - sh = frame.height + screen->getBorderWidth2x(), - tw = tbar->getWidth() + screen->getBorderWidth(), - th = tbar->getHeight() + screen->getBorderWidth(); + sh = frame.height + screen->getBorderWidth2x(), + tw = tbar->getWidth() + screen->getBorderWidth(), + th = tbar->getHeight() + screen->getBorderWidth(); if (tbar->getX() < frame.x + sw && tbar->getX() + tw > frame.x && tbar->getY() < frame.y + sh && tbar->getY() + th > frame.y) {

@@ -511,28 +524,28 @@ frame.y += tbar->getExposedHeight();

if (screen->getSlitDirection() == VERTICAL) frame.y_hidden += tbar->getExposedHeight(); else - frame.y_hidden = frame.y; + frame.y_hidden = frame.y; } else { frame.y -= tbar->getExposedHeight(); if (screen->getSlitDirection() == VERTICAL) frame.y_hidden -= tbar->getExposedHeight(); else - frame.y_hidden = frame.y; + frame.y_hidden = frame.y; } } if (hidden) XMoveResizeWindow(display, frame.window, frame.x_hidden, - frame.y_hidden, frame.width, frame.height); + frame.y_hidden, frame.width, frame.height); else XMoveResizeWindow(display, frame.window, frame.x, - frame.y, frame.width, frame.height); + frame.y, frame.width, frame.height); } void Slit::shutdown(void) { - while (clientList->count()) - removeClient(clientList->first()); + while (clientList.size() != 0) + removeClient(clientList.front()); }

@@ -597,7 +610,7 @@ void Slit::configureRequestEvent(XConfigureRequestEvent *e) {

fluxbox->grab(); if (fluxbox->validateWindow(e->window)) { - Bool reconf = False; + bool reconf = false; XWindowChanges xwc; xwc.x = e->x;

@@ -610,15 +623,16 @@ xwc.stack_mode = e->detail;

XConfigureWindow(display, e->window, e->value_mask, &xwc); - LinkedListIterator<SlitClient> it(clientList); - for (; it.current(); it++) - if (it.current()->window == e->window) - if (it.current()->width != ((unsigned) e->width) || - it.current()->height != ((unsigned) e->height)) { - it.current()->width = (unsigned) e->width; - it.current()->height = (unsigned) e->height; + SlitClients::iterator it = clientList.begin(); + SlitClients::iterator it_end = clientList.end(); + for (; it != it_end; ++it) + if ((*it)->window == e->window) + if ((*it)->width != ((unsigned) e->width) || + (*it)->height != ((unsigned) e->height)) { + (*it)->width = (unsigned) e->width; + (*it)->height = (unsigned) e->height; - reconf = True; + reconf = true; break; }
M src/Slit.hhsrc/Slit.hh

@@ -30,8 +30,8 @@ class Slit;

class Slitmenu; #include "Basemenu.hh" -#include "LinkedList.hh" +#include <list> class Slitmenu : public Basemenu { private:

@@ -100,7 +100,9 @@ Fluxbox *fluxbox;

BScreen *screen; BTimer *timer; - LinkedList<SlitClient> *clientList; + typedef std::list<SlitClient *> SlitClients; + + SlitClients clientList; Slitmenu *slitmenu; struct frame {

@@ -137,8 +139,8 @@ inline const unsigned int &getWidth(void) const { return frame.width; }

inline const unsigned int &getHeight(void) const { return frame.height; } void addClient(Window); - void removeClient(SlitClient *, Bool = True); - void removeClient(Window, Bool = True); + void removeClient(SlitClient *, bool = true); + void removeClient(Window, bool = true); void reconfigure(void); void reposition(void); void shutdown(void);