wmii

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

commit 0cca58fe53a29390ef82fd19fe7d1271068e81cc
parent 8a333e8010e609064523a76db4be0b3c1cea88b9
Author: Kris Maglione <jg@suckless.org>
Date:   Wed,  7 Feb 2007 23:23:18 -0500

Some refactoring, mainly related to stacking of the floating layer.


Diffstat:
area.c | 6++++--
event.c | 6++++--
frame.c | 15+++++++++++++++
view.c | 8--------
wmii.h | 1+
5 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/area.c b/area.c @@ -346,8 +346,9 @@ select_area(Area *a, char *arg) { if(p->anext == f) break; a->sel = p; arrange_column(a, False); + frame_to_top(p); if(v == screen->sel) - focus_view(screen, v); + restack_view(v); flush_masked_events(EnterWindowMask); return nil; } @@ -357,8 +358,9 @@ select_area(Area *a, char *arg) { p = f->anext ? f->anext : a->frame; a->sel = p; arrange_column(a, False); + frame_to_top(p); if(v == screen->sel) - focus_view(screen, v); + restack_view(v); flush_masked_events(EnterWindowMask); return nil; } diff --git a/event.c b/event.c @@ -97,8 +97,10 @@ buttonpress(XEvent *e) { break; } }else{ - if(ev->button == Button1) - focus(f->client, True); + if(ev->button == Button1) { + frame_to_top(f); + restack_view(f->view); + } XAllowEvents(blz.dpy, ReplayPointer, ev->time); } } diff --git a/frame.c b/frame.c @@ -83,6 +83,21 @@ resize_frame(Frame *f, XRectangle *r) { } void +frame_to_top(Frame *f) { + Frame **tf; + Area *a; + + a = f->area; + if(!a->floating) + return; + for(tf=&a->frame; *tf; tf=&(*tf)->anext) + if(*tf == f) break; + *tf = f->anext; + f->anext = a->frame; + a->frame = f; +} + +void swap_frames(Frame *fa, Frame *fb) { XRectangle trect; Area *a; diff --git a/view.c b/view.c @@ -186,14 +186,6 @@ restack_view(View *v) { wins[0] = screen->barwin; for(a=v->area; a; a=a->next) { if(a->frame) { - if(a == v->area) { - Frame **tf; - for(tf=&a->frame; *tf; tf=&(*tf)->anext) - if(*tf == a->sel) break; - *tf = a->sel->anext; - a->sel->anext = a->frame; - a->frame = a->sel; - } wins[n++] = a->sel->client->framewin; for(f=a->frame; f; f=f->anext) { Client *c = f->client; diff --git a/wmii.h b/wmii.h @@ -319,6 +319,7 @@ extern Frame *create_frame(Client *c, View *v); extern void remove_frame(Frame *f); extern void insert_frame(Frame *pos, Frame *f, Bool before); extern void resize_frame(Frame *f, XRectangle *r); +extern void frame_to_top(Frame *f); extern void swap_frames(Frame *fa, Frame *fb); extern void draw_frame(Frame *f); extern void draw_frames();