all repos — openbox @ df9d0c891ad0df9e91397f07fa439fea1e405b2b

openbox fork - make it a bit more like ryudo

Added a fallback for Best Fit to cascade. Also, moved cascade to its own
function. May not be needed.
Scott Moynes smoynes@nexus.carleton.ca
commit

df9d0c891ad0df9e91397f07fa439fea1e405b2b

parent

932ced3040a269b20708e1923b00168f9d6fc493

2 files changed, 23 insertions(+), 14 deletions(-)

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

@@ -41,6 +41,7 @@ #include "Screen.h"

#include "Toolbar.h" #include "Window.h" #include "Workspace.h" + #include "Windowmenu.h" #include "Geometry.h" #include "Util.h"

@@ -386,17 +387,17 @@ for (OpenboxWindow *cur=it.current(); cur!=NULL; it++, cur=it.current())

spaces = calcSpace(*cur, spaces); //Find first space that fits the window - best = 0; + best = NULL; for (siter=spaces.begin(); siter!=spaces.end(); ++siter) { if ((siter->w() >= win_size.w()) && (siter->h() >= win_size.h())) best = siter; } - if (best != 0) + if (best != NULL) return new Point(best->origin()); else - return new Point(200, 0); + return NULL; //fall back to cascade } inline Point *Workspace::rowSmartPlacement(const Size &win_size,

@@ -501,7 +502,9 @@ place_x=spot->x();

place_y=spot->y(); delete spot; placed=true; - } + }else + placed=false; + break; } case BScreen::RowSmartPlacement: {

@@ -581,15 +584,10 @@ }

} // switch if (! placed) { - if (((unsigned) cascade_x > (screen.size().w() / 2)) || - ((unsigned) cascade_y > (screen.size().h() / 2))) - cascade_x = cascade_y = 32; - - place_x = cascade_x; - place_y = cascade_y; - - cascade_x += win->getTitleHeight(); - cascade_y += win->getTitleHeight(); + Point *p = cascade(win); + place_x=p->x(); + place_y=p->y(); + delete p; } if (place_x + win_w > (signed) screen.size().w())

@@ -599,3 +597,14 @@ place_y = (((signed) screen.size().h()) - win_h) / 2;

win->configure(place_x, place_y, win->size().w(), win->size().h()); } + +Point *Workspace::cascade(const OpenboxWindow *const win){ + if (((unsigned) cascade_x > (screen.size().w() / 2)) || + ((unsigned) cascade_y > (screen.size().h() / 2))) + cascade_x = cascade_y = 32; + + cascade_x += win->getTitleHeight(); + cascade_y += win->getTitleHeight(); + + return new Point(cascade_x, cascade_y); +}
M src/Workspace.hsrc/Workspace.h

@@ -49,7 +49,7 @@ protected:

void placeWindow(OpenboxWindow *); Point *bestFitPlacement(const Size &win_size, const Rect &space); Point *rowSmartPlacement(const Size &win_size, const Rect &space); - + Point *cascade(const OpenboxWindow* window); public: Workspace(BScreen &, int = 0);