wmii

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

commit 962d2784f06c5697314211a5eb49ded3ecfc67bb
parent 054a356d003ea967cdb185e3b5c3a070d0feb550
Author: Kris Maglione <jg@suckless.org>
Date:   Fri, 23 May 2008 19:51:56 -0400

See diff.

Diffstat:
cmd/wmii.rc.rc | 2++
cmd/wmii/column.c | 3++-
cmd/wmii/layout.c | 17+++++++++--------
cmd/wmii/mouse.c | 2--
cmd/wmii/x11.c | 11+++++++++++
5 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/cmd/wmii.rc.rc b/cmd/wmii.rc.rc @@ -121,6 +121,8 @@ fn wi_runcmd { @{ if(~ $1 -t) { shift * = (wihack -tags `{wmiir read /tag/sel/ctl | sed 1q} $*) } + fn `{env | 9 sed -n 's/^fn#([^=]+).*/\1/p'} + mykeys=() eval exec $* & } } diff --git a/cmd/wmii/column.c b/cmd/wmii/column.c @@ -428,7 +428,8 @@ column_arrange(Area *a, bool dirty) { column_scale(a); resize: if(v == screen->sel) { - view_restack(v); + //view_restack(v); + client_resize(a->sel->client, a->sel->r); for(f=a->frame; f; f=f->anext) client_resize(f->client, f->r); } diff --git a/cmd/wmii/layout.c b/cmd/wmii/layout.c @@ -138,7 +138,7 @@ vplace(Framewin *fw, Point pt) { r = fw->w->r; hr = Dy(r)/2; - fw->xy = pt.y; + pt.y -= hr; if(a->frame == nil) goto done; @@ -151,14 +151,14 @@ vplace(Framewin *fw, Point pt) { vector_lpush(&vec, f->r.min.y + 1*hr); else vector_lpush(&vec, f->r.min.y + 2*hr); - if(!f->collapsed) + if(!f->collapsed && f->anext != fw->f) vector_lpush(&vec, f->r.max.y - 2*hr); } for(int i=0; i < vec.n; i++) { l = vec.ary[i]; - if(abs(fw->xy - l) < hr) { - fw->xy = l; + if(abs(pt.y - l) < hr) { + pt.y = l; break; } } @@ -166,7 +166,6 @@ vplace(Framewin *fw, Point pt) { done: pt.x = a->r.min.x; - pt.y = fw->xy; frameadjust(fw, pt, OHoriz, Dx(a->r)); reshapewin(fw->w, framerect(fw)); } @@ -239,8 +238,6 @@ trampoline(int fn, Frame *f) { fn = tramp[fn](f); } ungrabpointer(); - - warppointer(grabboxcenter(f)); } void @@ -249,15 +246,20 @@ mouse_movegrabbox(Client *c) { int incmode; f = c->sel; + incmode = def.incmode; def.incmode = IShow; view_update(f->view); + warppointer(grabboxcenter(f)); + if(f->area->floating) trampoline(TFloat, f); else trampoline(THCol, f); + def.incmode = incmode; view_update(f->view); + warppointer(grabboxcenter(f)); } static int @@ -377,7 +379,6 @@ thcol(Frame *f) { if(!grabpointer(&scr.root, nil, cursor[CurIcon], MouseMask)) goto done; - warppointer(pt); vplace(fw, pt); for(;;) switch (readmouse(&pt, &button)) { diff --git a/cmd/wmii/mouse.c b/cmd/wmii/mouse.c @@ -491,9 +491,7 @@ mouse_tempvertresize(Area *a, Point p) { if(!grabpointer(&scr.root, cwin, cursor[CurDVArrow], MouseMask)) goto done; - int amin = fa->colr.min.y; while(readmotion(&p)) { - fa->colr.min.y = amin; fa->colr.max.y = p.y; fb->colr.min.y = p.y + dy; column_arrange(a, false); diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c @@ -884,6 +884,17 @@ pointerscreen(void) { void warppointer(Point pt) { + /* Nasty kludge for xephyr, xnest. */ + static int havereal = -1; + static char* real; + + if(havereal == -1) { + real = getenv("REALDISPLAY"); + havereal = real != nil; + } + if(havereal) + system(sxprint("DISPLAY=%s wiwarp %d %d", real, pt.x, pt.y)); + XWarpPointer(display, /* src, dest w */ None, scr.root.w, /* src_rect */ 0, 0, 0, 0,