wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit d21e159f36bef9477440db635939b31fee6995d2
parent bf5abbd7d181cc5a5f0562e08dfb3d0e874e2925
Author: Kris Maglione <jg@suckless.org>
Date:   Sun, 19 Oct 2008 21:18:35 -0400

More of the previous. Add stack support.

Diffstat:
cmd/wmii/column.c | 16++++++++--------
cmd/wmii/fns.h | 4++--
cmd/wmii/message.c | 2+-
3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/cmd/wmii/column.c b/cmd/wmii/column.c @@ -181,7 +181,7 @@ stack_count(Frame *f, int *mp) { } Frame* -stack_find(Area *a, Frame *f, int dir) { +stack_find(Area *a, Frame *f, int dir, bool stack) { Frame *fp; switch (dir) { @@ -189,21 +189,21 @@ stack_find(Area *a, Frame *f, int dir) { die("not reached"); case North: if(f) - for(f=f->aprev; f && f->collapsed; f=f->aprev) + for(f=f->aprev; f && f->collapsed && stack; f=f->aprev) ; else { f = nil; for(fp=a->frame; fp; fp=fp->anext) - if(!fp->collapsed) + if(!fp->collapsed || !stack) f = fp; } break; case South: if(f) - for(f=f->anext; f && f->collapsed; f=f->anext) + for(f=f->anext; f && f->collapsed && stack; f=f->anext) ; else - for(f=a->frame; f && f->collapsed; f=f->anext) + for(f=a->frame; f && f->collapsed && stack; f=f->anext) ; break; } @@ -212,7 +212,7 @@ stack_find(Area *a, Frame *f, int dir) { /* TODO: Move elsewhere. */ bool -find(Area **ap, Frame **fp, int dir, bool wrap) { +find(Area **ap, Frame **fp, int dir, bool wrap, bool stack) { Rectangle r; Frame *f; Area *a; @@ -222,13 +222,13 @@ find(Area **ap, Frame **fp, int dir, bool wrap) { r = f ? f->r : a->r; if(dir == North || dir == South) { - *fp = stack_find(a, f, dir); + *fp = stack_find(a, f, dir, stack); if(*fp) return true; *ap = area_find(a->view, r, dir, wrap); if(!*ap) return false; - *fp = stack_find(*ap, *fp, dir); + *fp = stack_find(*ap, *fp, dir, stack); return *fp; } if(dir != East && dir != West) diff --git a/cmd/wmii/fns.h b/cmd/wmii/fns.h @@ -109,9 +109,9 @@ void column_settle(Area*); void div_draw(Divide*); void div_set(Divide*, int x); void div_update_all(void); -bool find(Area**, Frame**, int, bool); +bool find(Area**, Frame**, int, bool, bool); int stack_count(Frame*, int*); -Frame* stack_find(Area*, Frame*, int); +Frame* stack_find(Area*, Frame*, int, bool); /* event.c */ void check_x_event(IxpConn*); diff --git a/cmd/wmii/message.c b/cmd/wmii/message.c @@ -917,7 +917,7 @@ msg_selectframe(Area *a, IxpMsg *m, int sym) { return Ebadvalue; } else { - if(!find(&a, &f, DIR(sym), true)) + if(!find(&a, &f, DIR(sym), true, stack)) return Ebadvalue; }